【问题标题】:SQL IN statement and ordering the resultsSQL IN 语句和排序结果
【发布时间】:2011-01-31 18:22:40
【问题描述】:

我有一个逗号分隔的 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 命令来执行此操作,或者我只需要通过一些数组改组以我需要的方式排列结果?最好的方法是什么?

谢谢

【问题讨论】:

标签: php mysql arrays


【解决方案1】:
$query = "SELECT * FROM table WHERE id IN (" . $list . ") ORDER BY FIND_IN_SET(id, '".$list."')";

【讨论】:

    猜你喜欢
    • 2012-02-15
    • 2013-10-03
    • 2016-12-03
    • 1970-01-01
    • 2012-06-11
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多