簡體   English   中英

php mysql按獲取的順序對結果進行排序

[英]php mysql sort results by order fetched

使用IN語句時,如何按數組中ID的順序對結果進行排序:

SELECT ID,表WHERE ID IN中的名稱(23,33,55,2)

我想得到:

+----+---------+
| id | name    |
+----+---------+
| 23 | name1   |
| 33 | name2   |
| 55 | name3   |
|  2 | name4   |
+----+---------+

按此順序

只需在查詢末尾添加以下內容:

order by field(id, 23, 33, 55, 2)

您可以嘗試使用JOIN。 它不能保證按此順序返回,但是對於MySQL來說,在大多數情況下都適用:

SELECT table.id, table.name
FROM ( 
  SELECT 23 id UNION SELECT 33 id UNION SELECT 55 id UNION SELECT 2
) a
JOIN table
ON a.id = table.id

如何確定您的訂單? 如果您可以提供排序功能,它將變得很容易。

SELECT ID,表中的名稱WHERE ID IN(23,33,55,2)ORDER BY FIELD(ID,2,23,33,55)

您可以嘗試這樣的事情:

SELECT t.id,t.name 
from 
    (select 23 as id,1 as rnk union all 
     select 33 as id,2 union all
     select 55 as id,3 union all
     select 2 as id,4 )input
join table t 
on   t.id=input.id
order by input.rnk

SELECT id,name from table WHERE id IN (23, 33, 55, 2) ORDER BY id = 23 DESC, id = 33 DESC, id = 55 DESC, id = 2 DESC不是數據庫特定的解決方案,但仍然有效

暫無
暫無

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

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