[英]mysql order_by question
查询表文章:
select * from articles where article_id in(98,97,96,99)
返回的结果按顺序排列
record 96 ...
record 97 ...
record 98 ...
record 99 ...
但我更喜欢将结果排序为与'in(98,97,96,99)'相同。 有什么技巧使之成为可能? 谢谢。
我想这可能有效:
select * from articles where article_id in(98,97,96) order by article_id desc
union
select * from articles where article_id = 99
我看不到您订购的任何样式,因此我想不出任何其他方式来执行此操作。
Shawn,在MYSQL中使用IN语句时
它将“第一条记录ID”与您给定的ID进行比较。 然后将第二条记录ID与您的给定ID进行比较。 所以...
因此结果将以升序显示。
如果您不需要使用IN语句。 我希望检索循环中的每个记录。
谢谢
您可能可以执行以下操作:
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;
IN功能受列表大小的限制。 更可能的是,一旦列表达到几百个条目,您的性能就会下降-您最好单独检索记录并在客户端中对它们进行排序。
话虽如此,您还可以考虑使用另一个MySQL函数FIND_IN_SET来实现ORDER BY。 FIND_IN_SET最多只能处理集合中的64个成员。
ORDER BY
FIND_IN_SET( article_id, '98,97,96,99' )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.