繁体   English   中英

mysql order_by问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM