[英]MySQL ORDER BY IN()
我有一個 PHP 數組,里面有許多 ID。 這些號碼已經訂購。
現在我想通過 IN() 方法得到我的結果,得到所有的 ID。
但是,這些 ID 應該像在 IN 方法中一樣排序。
例如:
IN(4,7,3,8,9)
應該給出如下結果:
4 - Article 4
7 - Article 7
3 - Article 3
8 - Article 8
9 - Article 9
有什么建議么? 也許有一個功能可以做到這一點?
謝謝!
我認為您可能正在尋找函數FIELD——雖然通常被認為是一個字符串函數,但它也適用於數字!
ORDER BY FIELD(field_name, 3,2,5,7,8,1)
您可以使用FIELD()
:
ORDER BY FIELD(id, 3,2,5,7,8,1)
返回 str 在 str1, str2, str3, ... 列表中的索引(位置)。 如果未找到 str,則返回 0。
不過,這有點丑陋,所以只有在別無選擇的情況下才真正使用它。 在您的應用程序中對輸出進行排序可能會更好。
標准 SQL 不提供執行此操作的方法(MySQL 可以,但我更喜歡供應商中立的解決方案,因此我可以隨時切換 DBMS)。
這是返回結果集后在后處理中應該做的事情。 SQL 只能以“order by”子句中指定的順序返回它們(或者如果沒有這樣的子句,則以任何順序返回)。
另一種可能性(雖然我不喜歡它,但我很榮幸能給你選擇)是多次訪問數據庫,每個 ID 一次,並在它們進入時處理它們:
select * from tbl where article_id = 4;
// Process those.
select * from tbl where article_id = 7;
// Process those.
: : : : :
select * from tbl where article_id = 9;
// Process those.
您只需要按語句給出正確的順序。
SELECT ID FROM myTable WHERE ID IN(1,2,3,4) ORDER BY ID
您為什么要像您的示例中那樣對數據進行無序排序?
如果您不介意連接長查詢,請嘗試這種方式:
SELECT ID FROM myTable WHERE ID=1
UNION
SELECT ID FROM myTable WHERE ID=3
UNION
SELECT ID FROM myTable WHERE ID=2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.