微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 按时间顺序按两个字段和可能的NULL值排序

三个领域:

Activity (varchar), Arrival (time), Departure (time)

我试图生成这样的输出表:

Activity                    Arrival        Departure
Travel to Hotel             9:00           -
Depart Hotel for Big Ben    -              10:00
Sight-seeing Big Ben        12:00          13:00

– 表示我的表中的NULL值.

我目前在我的查询中订购如下:

ISNULL(Activity.arrival),Activity.arrival ASC

在提供抵达日期时效果很好.当到达为空时,我最终得到一个这样的表

Activity                       Arrival        Departure
Travel to Hotel                9:00           -
Sight-seeing Big Ben           12:00          13:00 // problem!
Depart Hotel for Big Ben       -              10:00 // should be up one. 

我不确定我是否可以使用纯sql来实现这一点.

正在进行查询是:

SELECT `id`, `activity`, `arrival`, `departure` FROM `activities` ORDER BY ISNULL(`arrival`) ASC, `arrival` ASC

而我只是输出

foreach($r as $k) {
    echo $k['activity'] . ' ' . $k['arrival'] . ' ' . $k['departure'];
}

我是否需要在输出时操纵它?

感谢您的任何见解.

解决方法:

您可以使用COALESCE()返回第一个非空值.

通过COALESCE订购(Activity.arrival,Activity.departure)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐