我有这样的查询: SELECT * FROM table WHERE id IN (2,4,1,5,3);
SELECT * FROM table WHERE id IN (2,4,1,5,3);
但是,当我打印出来时,它会自动进行1,2,3,4,5的排序。我们如何在不更改数据库结构的情况下保持顺序(2,4,1,5,3)?
谢谢!
我问这个:
mysql按问题排序
我得到的答案和所有功劳归于他们:
您可以使用CASE运算符指定顺序:
SELECT * FROM table WHERE id IN (3,6,1,8,9) ORDER BY CASE id WHEN 3 THEN 1 WHEN 6 THEN 2 WHEN 1 THEN 3 WHEN 8 THEN 4 WHEN 9 THEN 5 END
在PHP中,你可以像这样:
<?php $my_array = array (3,6,1,8,9) ; $sql = 'SELECT * FROM table WHERE id IN (3,6,1,8,9)'; $sql .= "\nORDER BY CASE id\n"; foreach($my_array as $k => $v){ $sql .= 'WHEN ' . $v . ' THEN ' . $k . "\n"; } $sql .= 'END '; echo $sql; ?>