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)

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...