gpt4 book ai didi

php - 按照 MySQL IN() 中指定的相同顺序对行进行排序

转载 作者:行者123 更新时间:2023-11-29 04:09:39 25 4
gpt4 key购买 nike

有一些ID:

$ids = "'55-30269','50-30261','50-30254','50-30257','50-30268','50-30253'";

有这样的查询:

$sql = "SELECT * FROM `report` WHERE `id` IN ($ids)";

我希望行的顺序与 $ids 中指定的顺序相同。取而代之的是,我得到了这些行最初插入表中的顺序。

此外,我不确定为什么我需要将每个 id 放在引号 '55-30269' 中,但查询不会以其他方式执行。例如。 $ids = "55-30269,50-30261,50-30254,50-30257,50-30268,50-30253";

最佳答案

因为ID的数据类型是string。字符串文字必须用单引号引起来。如果您想根据指定的 ID 对结果进行排序,请使用 FIELD() 进行自定义重新排序。

SELECT  *
FROM report
WHERE ID IN ($ids)
ORDER BY FIELD(ID, $ids)

在传递不带单引号的 ID 时没有得到准确结果的原因,

$ids = "55-30269,50-30261,50-30254,50-30257,50-30268,50-30253"

是因为 MySQL 对值执行算术运算。

55-30269 = -30216
50-30261 = -30211
...

关于php - 按照 MySQL IN() 中指定的相同顺序对行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15986064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com