【问题标题】:SQL, "WHERE IN" returns automatically sorted result [duplicate]SQL,“WHERE IN”返回自动排序的结果[重复]
【发布时间】: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) 中输入的顺序返回

【问题讨论】:

标签: php mysql sql where


【解决方案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');

【讨论】:

    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2013-02-14
    • 2011-01-31
    • 2013-03-29
    相关资源
    最近更新 更多