1

IN ステートメントを使用するときに、配列内の ID の順序で取得した結果を順序付けるにはどうすればよいですか。

SELECT id,name from table WHERE id IN (23, 33, 55, 2)

私は手に入れたい:

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

この順番で

4

5 に答える 5

6

これをクエリの最後に追加するだけです。

order by field(id, 23, 33, 55, 2)
于 2012-09-17T13:12:16.070 に答える
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

ご注文はどのように決まりますか?並べ替え機能を提供できれば、簡単になります。

于 2012-09-17T13:09:37.097 に答える
2

SELECT id,name from table WHERE id IN (23, 33, 55, 2) ORDER BY FIELD (id, 2, 23, 33, 55)

于 2012-09-17T13:10:34.337 に答える
1

あなたはこのようなことを試すことができます:

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
于 2012-09-17T13:06:47.507 に答える
1

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データベース固有のソリューションではありませんが、それでも機能します

于 2012-09-17T13:08:57.213 に答える