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

时间:2010-03-25 14:43:17

标签: php mysql arrays

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

EG

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

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

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

感谢

1 个答案:

答案 0 :(得分:9)

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