如果有如下所示的数据;
id cnt_stamp
1 999
2 3
3 9
4 3
5 1000
6 30
如果输入是这个顺序的(4,1,2,3),我只想得到(3,999,3,9)。 为此,我创建了一个SQL
SELECT `cnt_stamp`
FROM `stm_events`
ORDER BY FIELD(`id`, 4, 1, 2, 3);
但它返回(1000,30,3,999,3,9)。我应该如何修复我的SQL以实现我的目标?感谢您抽出宝贵时间。
答案 0 :(得分:2)
39
\
87
/ \
47 92
\ \
67 97
/ \ \
62 72 99
/
56
会将FIELD
分配给任何不匹配的NULL
,并且默认情况下会在MySQL中排序。如果您不想查看非匹配项,则可以添加id
子句:
WHERE
如果您希望查看所有数据,并在结尾处使用不匹配的SELECT cnt_stamp
FROM stm_events
WHERE id IN (1, 2, 3, 4)
ORDER BY FIELD(id, 4, 1, 2, 3);
值,请反转字段列表的顺序并按降序排序:
id
答案 1 :(得分:1)
使用COALESCE
功能:
SELECT `cnt_stamp`
FROM `stm_events`
ORDER BY COALESCE(`id`,FIELD(`id`,4,1,2,3));