用sql中的where in语句可以对指定id的记录进行查询,有时我们想把查询出来的结果按照in中的id 顺序进行排序。比如 select * from table where id in('2','3','1','5')
我们想让查询出来的记录是按照2,3,1,5的先后顺序列出,但mysql除了order by asc/desc之外没有别的语句对其进行排序,
现在介绍的这二种方法可以实现这个功能
1.用union一个一个的查询并连接出来。比如
SELECT * FROM table WHERE ID =4 UNION SELECT * FROM table WHERE ID =2 UNION SELECT * FROM table WHERE ID =5
2,用sql中的case。比如
SELECT * , CASE id WHEN 4 THEN 1 WHEN 2 THEN 2 WHEN 5 THEN 3 END AS ordid FROM jyk_archives WHERE id IN ( 4, 2, 5 ) ORDER BY ordid ASC
这二种方法都可以实现这种按in中的id的顺序进行排序。但弊端也很显然,都太麻烦,但没办法,谁让mysql都没有提供这种方法呢,
前几天本人就遇到这种情况,不过笔者的需求只是对其中的二个id排列到最前面即刻,但sql连表太多,也没有用上面的方法,最后用php类似冒泡算法,把那二个id搞到前面
以上二种方法是笔者在网上找到的资料,希望对各朋友有用。