我在PHP工作,我有一个id列表,这是排名,与第一个是最重要的。我正在使用这样的东西检索行(为了清晰起见简化):
$id_as_sql_list = implode("','", $id_list);
$sql = "SELECT * FROM books
WHERE id in ('$id_as_sql_list')";
这基本上可以写成:
WHERE id in ('456', '123', '789')
问题是,数据库的结果没有按照列表的顺序返回。把它们按这个顺序弄回来的最好办法是什么?
看一下按字段排序的语法。
这是一个例子
select * from table
where id in (x,y,z)
order by field(id,x,y,z)
$sql = "SELECT * FROM books
WHERE id in ('$id_as_sql_list')
ORDER BY YourRankingField ";
use ORDER BY
$sql = "SELECT * FROM books
WHERE id in ('$id_as_sql_list') ORDER BY whatever";
其中whatever
是您希望排序的字段