Mysql 如何以手动指定的顺序检索项目

Mysql 如何以手动指定的顺序检索项目,mysql,Mysql,我有一个PHP中的id列表。例如: $id = (4,6,3,2,5,1) 当我执行这样的查询时: $query = mysql_query("SELECT * FROM table WHERE ID IN ($id)"); 它检索我想要的结果,但项目按插入顺序返回 相反,我希望按照数组中给定的顺序检索结果: information 4, information 6, information 3, information 2, information 5, information 1 我

我有一个PHP中的id列表。例如:

$id = (4,6,3,2,5,1)
当我执行这样的查询时:

$query = mysql_query("SELECT * FROM table WHERE ID IN ($id)");
它检索我想要的结果,但项目按插入顺序返回

相反,我希望按照数组中给定的顺序检索结果:

information 4, information 6, information 3, information 2, information 5, information 1 
我该怎么做

谢谢大家!解决方案是按字段排序(ID,$ID)


您的代码易受注入攻击。您应该对PDO或mysqli使用适当的参数化查询

$query="SELECT * FROM table WHERE ID IN ($id) ORDER BY FIND_IN_SET(ID,$id) DESC";

您的代码易受注入攻击。您应该对PDO或mysqli使用适当的参数化查询

$query="SELECT * FROM table WHERE ID IN ($id) ORDER BY FIND_IN_SET(ID,$id) DESC";
也检查一下这个

也检查一下这个

试试这个

$query = "SELECT * FROM table WHERE ID IN ($id) ORDER BY FIELD(ID,$id) ";
你可以看到这个

试试这个

$query = "SELECT * FROM table WHERE ID IN ($id) ORDER BY FIELD(ID,$id) ";

你可以看到这个

你可以在上面使用
字段

SELECT * 
FROM table 
WHERE ID IN (4,6,3,2,5,1)
ORDER BY FIELD(ID, 4,6,3,2,5,1)

您可以在这上面使用
字段

SELECT * 
FROM table 
WHERE ID IN (4,6,3,2,5,1)
ORDER BY FIELD(ID, 4,6,3,2,5,1)

按字段排序(ID,4,6,3,2,5,1)不起作用。但是(ID,$ID)可以提供样本记录吗?按字段排序(ID,4,6,3,2,5,1)不起作用。但是(ID,$ID)你能提供样本记录吗?