0

質問があります:

SELECT * FROM products WHERE id IN (1,2,3)

これは次を返します:

ID | Title
1  | Bla
2  | Bla2
3  | Bla3

クエリを次のように変更した場合:

SELECT * FROM products WHERE id IN (2,3,1)

私はまだ得ます:

ID | Title
1  | Bla
2  | Bla2
3  | Bla3

クエリを変更して次の情報を取得するにはどうすればよいですか。

ID | Title
2  | Bla2
3  | Bla3
1  | Bla

2番目のクエリについては?つまり、INクエリのアイテムの順序で結果を並べ替えますか?次のようなことを言うことは可能ですか?

ORDER BY ID (2,3,1) 

4

3 に答える 3

3

次のようなものを使用できます。

SELECT *
FROM products
WHERE id IN (2,3,1)
ORDER BY FIND_IN_SET(id, '2,3,1')

または、次の方法で注文することもできます。

ORDER BY FIELD(id, 3,2,1)

こちらのフィドルをご覧ください。

于 2013-03-07T17:58:17.593 に答える
3

句でCASE式を使用できます。ORDER BY

SELECT * 
FROM products 
WHERE id IN (2,3,1)
order by 
  case id 
    when 2 then 0
    when 3 then 1
    when 1 then 2
    else 3
  end

SQL FiddlewithDemoを参照してください

于 2013-03-07T18:03:28.393 に答える
0

あなたが使用する必要がありますORDER BY <ASC/DESC>

SELECT * FROM products WHERE id IN (1,2,3) order by id desc
于 2013-03-07T17:44:52.777 に答える