SQL IN语句并对结果进行排序

und*_*ned 4 php mysql arrays

我有一个以逗号分隔的id列表,我想用它来从数据库中检索记录.我可以使用IN语句来获取结果,但我希望结果的顺序与原始列表的顺序相同.

例如

$list = "3,1,4,2,5";
$query = "SELECT * FROM table WHERE id IN (" . $list . ")";
$result = @mysql_query($query);
while($row=mysql_fetch_array($result)){ 
echo($row['id']. ", " ); // returns 1, 2, 3, 4, 5 
}
Run Code Online (Sandbox Code Playgroud)

好的,所以我按照它们出现在数据库中的顺序得到结果 - 足够公平,但我希望结果与原始列表的顺序相同,我希望SQL首先检索3,然后是1等...

是否有一个SQL命令来执行此操作,或者我只是需要按照我需要的方式通过某些数组洗牌来排列结果?做这个的最好方式是什么?

谢谢

rek*_*o_t 9

$query = "SELECT * FROM table WHERE id IN (" . $list . ") ORDER BY FIND_IN_SET(id, '".$list."')";
Run Code Online (Sandbox Code Playgroud)