我使用了一個mysql查詢,其中有「where id in(」22,20,21「)」 但是當我得到結果時,它的數組按照升序排序,即20,21, 20「where in」mysql clause
,但我需要它以相同的順序,因爲我給了該條款,除非給出明確排序
我使用了一個mysql查詢,其中有「where id in(」22,20,21「)」 但是當我得到結果時,它的數組按照升序排序,即20,21, 20「where in」mysql clause
,但我需要它以相同的順序,因爲我給了該條款,除非給出明確排序
我認爲你應該能夠使用該字段關鍵字,像這樣:
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
子句。對於使用FIND_IN_SET
的解決方案,請參閱this answer。
如前所述...... WHERE
子句對結果集的排序沒有任何作用。使用MySQL built-in FIELD
function在ORDER BY
子句指定結果集應如何下令:
... WHERE id IN (22, 20, 21) ORDER BY FIELD(id, 22, 20, 21) ...
一般來說,數據庫系統返回任何順序感覺的結果。如果你想要訂購它,你必須告訴它。 This blog post提供了這樣做的一種方法;您可以在網上找到其他解決方案。
什麼是完整查詢? – cambraca 2010-11-30 06:11:58
可能重複[如何命令查詢結果與在WHERE條件中指定的id相同?](http://stackoverflow.com/questions/3984531/how-can-i-order-a-query-result-相同的ID在指定的在哪裏條件) – deceze 2010-11-30 06:14:52
我同意@deceze它是重複的。沒有看到你的答案,或者可能會指出他在那個方向。 – 2010-11-30 06:20:09