如何从MySQL表的有序id列表中获得有序行列表?


How can I get a list of ordered rows from a list of ordered ids from a MySQL table?

我在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是您希望排序的字段