簡體   English   中英

在Select .. In語句中排序MySQL

[英]MySQL ordering in Select .. In statement

在MySQL中,我喜歡SQL

select id from user where id IN (2, 3, 1);

但MySQL將行返回為1,2,3,是否有可能強制MySQL返回與原始訂單2,3,1相同的順序?

謝謝。

您可以使用FIELD功能:

select id from user where id IN (2, 3, 1) ORDER BY FIELD(id, 2, 3, 1);

對於便攜式代碼,請使用CASE/WHEN 它受所有(主要)dbms支持。

order 
   by case when id = 2 then 1
           when id = 3 then 2
           when id = 1 then 3
       end

您也可以通過LOCATE訂購,如下所示:

SELECT
    `id`
FROM
    `user`
WHERE
    `id` IN(2, 3, 1)
ORDER BY
    LOCATE(`id`, "2 3 1")

費利克斯

暫無
暫無

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

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