クエリは次のとおりです。
SELECT *
FROM table
WHERE id = 1
OR id = 100
OR id = 50
1,100,50 の順に ID を指定したことに注意してください。
行が 1,100,50 の順序で返されるようにします。
現在、私は 1,50,100 - 基本的に昇順で戻ってきます。テーブルの行も昇順で挿入されたとします。
MySQL固有のFIND_IN_SET関数を使用します。
SELECT t.*
FROM table t
WHERE t.id IN (1, 100, 50)
ORDER BY FIND_IN_SET(CAST(t.id AS VARCHAR(8)), '1,100,50')
これにアプローチする別の方法は、リストをサブクエリに入れることです。
select table.*
from table join
(select 1 as id, 1 as ordering union all
select 100 as id, 2 as ordering union all
select 50 as id, 3 as ordering
) list
on table.id = list.id
order by list.ordering
あなたはこれを行うことができますORDER BY
:
ORDER BY
id = 1 DESC, id = 100 DESC, id = 50 DESC
0
中古品1
ですORDER BY
。
これを試して
SELECT *
FROM new
WHERE ID =1
OR ID =100
OR ID =50
ORDER BY ID=1 DESC,ID=100 DESC,ID=50 DESC ;
... WHERE id IN (x,y,x) ORDER BY FIELD (id,x,y,z)