mysql使用in的时候返回数据顺序不对

作者: dreamfly 分类: mysql 发布时间: 2019-01-26 08:00

mysql

今天处理线上问题的时候,遇到了一个非常诡异的事情,本来都是按照正常顺序查出的数据,但是显示的时候顺序却发生了变化。于是一步一步进行跟踪调试。发现了罪魁祸首就是mysql的in函数。

平常使用in的时候,一般都没有对返回结果集数据顺序有要求,因此也没有在意in这个函数的具体用法。今天仔细研究了一下,这里面大有学问。

举个例子,比如我们的数据是这样查询的

select * from product where id in (3,4,8,5,1,6,2,7);

返回的产品结果集顺序就是1,2,3,4,5,6,7,8。它并不会按照我们期望的结果返回,如果我们想要我们期望的结果返回的话。我们的的查询语句应该修改为:

select * from product where id in (3,4,8,5,1,6,2,7) order by field(id,3,4,8,5,1,6,2,7);

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!