这是我的疑问:
SELECT * FROM article WHERE id IN (300, 400, 100)
但它始终按照id。
命令文章相同所以我会因为上述事情而退出:
id
100
300
400
有没有办法按照IN语句中请求的顺序获得结果?例如
id
300
400
100
答案 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
语句中包含许多值,那么这很有效。