簡體   English   中英

如何使用“ ORDER BY FIELD”對SQL結果進行排序

[英]How to use “ORDER BY FIELD” to sort the result of a SQL

如果有如下所示的數據;

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以達到目標? 感謝您抽出寶貴的時間。

在MySQL中, FIELD會將NULL分配給任何不匹配的id ,並且默認情況下,空值首先排序。 如果您根本不想看到不匹配的項目,則可以添加WHERE子句:

SELECT cnt_stamp
FROM stm_events
WHERE id IN (1, 2, 3, 4)
ORDER BY FIELD(id, 4, 1, 2, 3);

如果要查看所有數據,但id值結尾不匹配,請反轉字段列表的順序並降序排列:

SELECT cnt_stamp
FROM stm_events
ORDER BY FIELD(id, 3, 2, 1, 4) DESC;

演示

使用COALESCE函數:

SELECT `cnt_stamp` 
  FROM `stm_events` 
 ORDER BY COALESCE(`id`,FIELD(`id`,4,1,2,3));

SQL小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM