[英]“ where in ” mysql clause
我使用了一個mysql查詢,其中有“where in in(”22,20,21“)”但當我得到結果時,它的數組按照順序排列,即20,21,20
但我需要的順序與我給出的條款相同
我認為你應該能夠像這樣使用FIELD關鍵字:
SELECT * FROM table
WHERE id in (22,20,21)
ORDER BY FIELD(id,22,20,21);
這是特定於mysql的,看起來很神奇,但它確實有效。
除非給出明確的排序,否則SQL結果是無序的; 訂單將不會從in
子句中獲取。
既然ID既不是ASC也不是DESC,你必須通過ORDER BY
別的東西; 你是如何確定22,20,21訂單的?
如上所述...... WHERE
子句對結果集的排序沒有任何作用。 在ORDER BY
子句中使用MySQL內置FIELD
函數來指定應如何排序結果集:
... WHERE id IN (22, 20, 21) ORDER BY FIELD(id, 22, 20, 21) ...
您無法指定將在WHERE
子句中返回的訂單結果。 如果要指定順序,則需要在查詢中添加ORDER BY
子句。 對於使用FIND_IN_SET
的解決方案,請參閱此答案 。
通常,數據庫系統以任何順序返回結果。 如果您想訂購它,您必須告訴它。 這篇博文提供了一種方法; 您可以在線找到其他解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.