Mysql ORDER BY FIELD()以特定模式

时间:2016-05-30 10:16:39

标签: mysql

如果有人请帮助我,我很震惊..
对不起,我的英语不好 我的SQL查询是: -

SELECT * FROM table ORDER BY FIELD(ID,1,5,4,3)

我想这样做id 1应该是第一条记录,id 5应该是第6条记录,id 4应该是第11条记录,id 3应该是第16条记录, 有没有办法在mysql中执行此操作.. 请帮帮我。

1 个答案:

答案 0 :(得分:0)

只要您只想查看order by子句中列出的ID,您的代码就可以运行。尝试将您选择的ID添加到where子句:

SELECT * FROM table 
WHERE ID in(1,3,4,5)
ORDER BY FIELD(ID,1,5,4,3) ;
你可以测试一下吗?它对我来说很好。

您还可以使用多个选择和联合来解决此问题。

SELECT * FROM table where ID=1
UNION ALL
SELECT * FROM table where ID=5
UNION ALL
SELECT * FROM table where ID=4
UNION ALL
SELECT * FROM table where ID=3  ;

UNION ALL将显示完整的结果集。没有ALL的UNION将排除重复的结果。在你的情况下,重复是不可能的,所以没有ALL的联合就足够了:

 SELECT * FROM table where ID=1
    UNION 
    SELECT * FROM table where ID=5
    UNION 
    SELECT * FROM table where ID=4
    UNION 
    SELECT * FROM table where ID=3  ;