Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用不同的日期字段排序_Mysql_Sql_Sql Order By - Fatal编程技术网

Mysql 使用不同的日期字段排序

Mysql 使用不同的日期字段排序,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我有一个棘手的SQL问题。我正在处理可以发送或安排的帖子。结构如下: ---------------- - Posts - ---------------- - id - - sent_at - - scheduled_at - - created_at - ---------------- 可以在不安排时间的情况下发送帖子。 预定的邮件将在预定的时间发送。此时,发送日期将等于计划日期 有些帖子刚刚创建,没有发送,也没有预定日期 所有帖子都有一个

我有一个棘手的SQL问题。我正在处理可以发送或安排的帖子。结构如下:

----------------
- Posts        -
----------------
- id           -
- sent_at      -
- scheduled_at -
- created_at   -
----------------
可以在不安排时间的情况下发送帖子。 预定的邮件将在预定的时间发送。此时,发送日期将等于计划日期 有些帖子刚刚创建,没有发送,也没有预定日期 所有帖子都有一个创建日期 可能的数据示例:

我想做的是:

我想根据不同的情况,用不同的属性来排列所有的帖子

为P1和P2在处创建了_ P3、P4和P5的计划时间 我尝试了订单条件的不同变化,但我无法得到任何适用于所有情况的结果。我希望这一切都有意义。如果没有,我可以提供更多详细信息。

在P1和P2中,scheduled_at为空,因此这是唯一应由created_at订购的情况。因此,您可以使用: 在P1和P2中,如果计划的时间为空,则按案例排序;如果计划的时间为空,则在P1和P2中创建其他计划的时间,则按案例排序;如果计划的时间为空,则按案例排序;因此,这是应按创建的时间排序的唯一案例。因此,您可以使用: 当scheduled_at为空时按情况排序,然后在ELSE scheduled_末尾创建

尝试使用合并:

select * from foo
order by coalesce(created_at, scheduled_at)
尝试使用合并:

select * from foo
order by coalesce(created_at, scheduled_at)

它似乎不起作用。你真的能使用mysql吗?很抱歉忘记了END子句,现在试试。+1它现在可以工作了,谢谢!我也会尝试联合解决方案,看看是否有一个更适合这种情况,它似乎不起作用。你真的能使用mysql吗?很抱歉忘记了END子句,现在试试。+1它现在可以工作了,谢谢!我也会尝试合并解决方案,看看哪个更适合这种情况