在 MySQL“IN”查询中保留指定的顺序
使用 MySQL 查询数据时,“IN”运算符允许您根据在一组值上。但是,请务必注意,这些查询的默认行为不会维持指定值的顺序。
问题:
在以下情况下对于具有自动递增主键的表,您可能会遇到这样的情况:“IN”查询的结果是根据主键而不是值的指定顺序进行排序的。如果您想保留结果的顺序,这可能会出现问题。
解决方案:
要实现所需的排序,您可以使用 FIELD() 函数与 ORDER BY 子句结合使用。 FIELD() 函数根据值在其参数列表中出现的顺序为值分配位置。下面是一个示例:
SELECT * FROM foo f WHERE f.id IN (2, 3, 1) ORDER BY FIELD(f.id, 2, 3, 1);
在此查询中,FIELD() 的参数列表指定您希望结果显示的顺序。 ORDER BY 子句根据 FIELD() 指定的位置对结果进行排序。
说明:
FIELD() 函数指定以下位置到值:
通过使用此方法,您可以确保“IN”查询中结果的顺序与指定值的顺序匹配。这在您处理有序数据集或想要维护记录之间的特定关系时特别有用。
以上是如何保留 MySQL'IN”查询中值的顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!