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 回答