SQL," WHERE IN"返回自动排序结果

时间:2017-05-09 15:08:49

标签: php mysql sql where

当我使用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)

返回

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

尝试:

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