有一些ID:
$ids = "'55-30269','50-30261','50-30254','50-30257','50-30268','50-30253'";
Run Code Online (Sandbox Code Playgroud)
有这个查询:
$sql = "SELECT * FROM `report` WHERE `id` IN ($ids)";
Run Code Online (Sandbox Code Playgroud)
我希望行的顺序与指定的顺序相同$ids.而不是我得到这些行最初插入表中的顺序.
此外,我不知道为什么我需要将每个id放在引号中'55-30269',但查询不会以其他方式执行.例如$ids = "55-30269,50-30261,50-30254,50-30257,50-30268,50-30253";
因为数据类型ID是字符串.字符串文字必须用单引号括起来.如果要根据指定的顺序对结果进行排序ID,请使用FIELD()自定义重新排序.
SELECT *
FROM report
WHERE ID IN ($ids)
ORDER BY FIELD(ID, $ids)
Run Code Online (Sandbox Code Playgroud)
你在没有单引号的情况下传递ID时没有得到确切结果的原因,
$ids = "55-30269,50-30261,50-30254,50-30257,50-30268,50-30253"
Run Code Online (Sandbox Code Playgroud)
是因为MySQL对值执行算术运算.
55-30269 = -30216
50-30261 = -30211
...
Run Code Online (Sandbox Code Playgroud)