SQL,“WHERE IN”返回自动排序的结果[重复]
Posted
技术标签:
【中文标题】SQL,“WHERE IN”返回自动排序的结果[重复]【英文标题】:SQL, "WHERE IN" returns automatically sorted result [duplicate] 【发布时间】:2017-10-07 23:35:24 【问题描述】:当我使用 WHERE IN
语句运行查询时,它似乎会自动对返回的 product_id 进行排序。
$SQL = "SELECT * FROM PIM WHERE product_id in (10,8,1,3)";
foreach($conn->query($sql) as $row)
echo $row['product_id'] . "<br>";
结果:
1
3
8
10
我希望他们按照他们在 (10,8,1,3) 中输入的顺序返回
【问题讨论】:
它可能会按顺序返回它们;但除非您指定 ORDER BY 子句,否则返回顺序是不确定的 (ORDER BY FIELD(product_id, 10, 8, 1, 3)
)
如果您希望 SQL 结果按特定顺序排列,则必须添加特定的ORDER BY
子句
"A common question on the mailing lists is how to sort results in a particular order. Just use the FIELD function:"
【参考方案1】:
由于在您的原始查询中您没有指定 mysql 应该使用哪个顺序,因此使用的是 ASC,请尝试像这样使用 ORDER BY FIELD():
SELECT * FROM PIM WHERE product_id in (10,8,1,3) ORDER BY FIELD(product_id, 10,8,1,3);
检查这个great answer for more details。
【讨论】:
谢谢,成功了:-)【参考方案2】:试试:
select * from PIM where id in (1,3,8,10) order by find_in_set(id,'10,8,1,3');
【讨论】:
以上是关于SQL,“WHERE IN”返回自动排序的结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章