使用IN和订购?

时间:2014-07-24 13:21:30

标签: mysql

这是我的疑问:

SELECT * FROM article WHERE id IN (300, 400, 100)

但它始终按照id。

命令文章相同

所以我会因为上述事情而退出:

id
100
300
400

有没有办法按照IN语句中请求的顺序获得结果?例如

id
300
400
100

2 个答案:

答案 0 :(得分:12)

你可以尝试这样的事情。使用FIELD()功能。

SELECT * FROM article 
WHERE id IN (300, 400, 100) 
ORDER BY FIELD(id, 300, 400, 100);

答案 1 :(得分:0)

您可以将所需的值放入临时表中,如下所示:

CREATE TABLE TempT (sortOrder int,
                    id int);

INSERT INTO TempT (sortOrder, id) VALUES
(1, 300),(2, 400),(3, 100);

然后就这样加入桌子:

SELECT a.*
FROM article a
INNER JOIN TempT t ON a.id = t.id
ORDER BY t.sortOrder;

SQL Fiddle示例。如果您需要在IN语句中包含许多值,那么这很有效。