SQL, "WHERE IN" returns 自动排序结果

SQL, "WHERE IN" returns automatically sorted result

当我 运行 使用 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) 中输入的顺序返回

由于在您的原始查询中您没有指定 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

尝试:

select * from PIM where id in (1,3,8,10) order by find_in_set(id,'10,8,1,3');