2017-05-09 79 views
0

當我使用WHERE IN語句運行查詢時,它似乎會自動對返回的product_id進行排序。SQL,「WHERE IN」迴歸自動排序結果

$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)

+5

它可能是偶然的順序返回它們;但除非指定了ORDER BY子句,否則返回順序是不確定的('ORDER BY FIELD(product_id,10,8,1,3)') –

+3

如果您希望您的SQL結果按特定順序,則必須添加一個特定的'ORDER BY'子句 –

+0

[*「郵件列表中的常見問題是如何按特定順序對結果進行排序。只需使用FIELD函數:」*](https://dev.mysql.com/doc/) refman/5.7/en/sorting-rows.html) –

回答

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

+0

謝謝,這工作:-) –

2

嘗試:

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