我有一个简单的查询。像这样:
SELECT
id,
item,
action,
desc,
time
FROM t1
WHERE bus = 6
ORDER BY action DESC, time ASC
如果 desc ==''
,我需要修改ORDER BY部分并仅使用操作DESC基本上它会输出结果并按ASC顺序按时间排序,如果有任何没有描述的操作将挂在顶部。是否可以在单个查询中执行?如果是,我该如何加入它?
答案 0 :(得分:4)
case
语句非常有用,可以让你做各种有趣的事情。可以在任何地方使用单个列。
SELECT
id,
item,
action,
t1.`desc`,
time
FROM t1
WHERE bus = 6
ORDER BY
case t1.`desc` when '' then action else '' end DESC,
time ASC
答案 1 :(得分:1)
使用一个假排序字段进行单个查询。
SELECT
`id`,
`item`,
`action`,
`desc`,
`time`
FROM t1
WHERE `bus` = 6
ORDER BY IF(`desc` = '', 0, 1), `action` DESC, `time` ASC
编辑:注意到OP sql包含保留字,我在答案中重复它,假设它只是样本 - 我的坏。我为未来的读者添加了反引号。