查询表文章:
select * from articles where article_id in(98,97,96,99)
返回结果,如
record 96 ...
record 97 ...
record 98 ...
record 99 ...
但我更喜欢结果与'in(98,97,96,99)'相同。任何使它成为可能的技巧? 谢谢。
答案 0 :(得分:1)
我想这可能有用:
select * from articles where article_id in(98,97,96) order by article_id desc
union
select * from articles where article_id = 99
我看不到你订购的任何模式,所以我想不出有任何其他方法可以做到这一点。
答案 1 :(得分:1)
Shawn,在MYSQL中使用IN语句
它将第一个记录ID与您给定的ID进行比较。 然后将第二个记录ID与您的给定ID进行比较。 所以...
因此结果将以asc顺序显示。
如果您不需要使用IN语句。我更喜欢在循环中检索每条记录。
三江源
答案 2 :(得分:1)
你可能会做这样的事情:
select * from articles where article_id in(98,97,96,99) order by article_id == 98 desc, article_id == 97 desc, article_id == 96 desc, article_id == 99 desc;
答案 3 :(得分:1)
IN功能受限于列表大小。更有可能的是,一旦列表达到几百个条目,您的性能就会下降 - 您也可以单独检索记录并在客户端中对它们进行排序。
话虽如此,还有另一个MySQL函数FIND_IN_SET,你可以考虑实现你的ORDER BY。 FIND_IN_SET只能处理集合中最多64个成员。
ORDER BY
FIND_IN_SET( article_id, '98,97,96,99' )