9

私のクエリ

select * from product where productId in(25,36,40,1,50);

結果は次のように表示されます

`productId   ProductName  Qty Price`
-------------------------------------
`1          | namesome  | 5 | 25.00`
`25         | namesome  | 5 | 35.00`
`36         | namesome  | 5 | 35.00`
`40         | namesome  | 5 | 35.00`
`50         | namesome  | 5 | 35.00`

order by私は句を使用しませんでしたが、自動的に適用された order by productId
次のようにソートなしで結果が必要です

`productId   ProductName  Qty Price`
-------------------------------------
`25        | namesome  | 5 | 25.00`
`36        | namesome  | 5 | 35.00`
`40        | namesome  | 5 | 35.00`
`1         | namesome  | 5 | 35.00`
`50        | namesome  | 5 | 35.00`

どうすればこれを達成できますか?
データベース エンジン: MyIsam、照合順序: utf8_general_ci、PrimaryKey onproductId

4

2 に答える 2

14
select * 
from product 
where productId in(25,36,40,1,50) 
order by find_in_set(productId, '25,36,40,1,50');

このSQLFiddleを参照してください

于 2012-12-01T08:49:29.903 に答える
0

それらをランダムに並べたい場合は、次のようにします。

select * from product where productId in(25,36,40,1,50) ORDER BY RAND()

デフォルトの順序付けは、おそらく ID がインデックスでソートされる方法によるものです。

于 2012-12-01T08:55:37.993 に答える