首页 > 数据库 > mysql教程 > 如何在 MySQL 'IN' 查询中保留值的顺序?

如何在 MySQL 'IN' 查询中保留值的顺序?

Mary-Kate Olsen
发布: 2024-12-26 08:39:13
原创
768 人浏览过

How to Preserve the Order of Values in a MySQL `IN` Query?

在 MySQL“IN”查询中保留序列

在 MySQL 中,“IN”运算符选择与所提供列表中的任何值匹配的记录。默认情况下,结果按照数据库排序算法定义的顺序返回,这可能并不总是与查询中指定的顺序对齐。

让我们考虑以下示例:

SELECT * FROM foo f WHERE f.id IN (2, 3, 1);
登录后复制

此查询旨在检索 ID 为 2、3 和 1 的记录。但是,结果通常按 ID 排序升序:

+----+--------+
| id | name   |
+----+--------+
|  1 | first  |
|  2 | second |
|  3 | third  |
+----+--------+
登录后复制

为了保持查询中指定的顺序,我们需要显式地对结果进行排序。 ORDER BY FIELD() 函数可以实现此目的。

SELECT * FROM foo f WHERE f.id IN (2, 3, 1)
ORDER BY FIELD(f.id, 2, 3, 1);
登录后复制

FIELD() 函数将一个值作为第一个参数,将值列表作为其余参数。它返回值在列表中的位置。例如,FIELD(2, 2, 3, 1) 返回 1,因为 2 是列表中的第一个值。

通过按 FIELD(f.id, 2, 3, 1) 对结果进行排序,我们指示 MySQL 首先按第一个值 (2) 对记录进行排序,然后按第二个值 (3),最后按第三个值 (1) 对记录进行排序。此顺序可确保结果按照查询中出现的顺序返回。

+----+--------+
| id | name   |
+----+--------+
|  2 | second |
|  3 | third  |
|  1 | first  |
+----+--------+
登录后复制

以上是如何在 MySQL 'IN' 查询中保留值的顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板