mysql - 为什么这个简单的 MySQL 查询排序为 "by itself"

标签 mysql

这个非常简单的查询:

SELECT * FROM table WHERE widget_id IN (10212, 10217, 10218, 10215, 10213);

已决定按数字顺序输出记录...

10212
10213
10215
10217
10218

当我期望并要求它按照我在 IN 子句中包含的顺序输出记录时。

就好像我附加了 ORDER BY widget_id - 而我故意没有附加。

有人可以向这位 SQL 新手解释一下为什么会发生这种情况以及如何让它按照我的方式进行吗?

最佳答案

您正在寻找field函数:

select *
from table
where widget_id in (10212, 10217, 10218, 10215, 10213)
order by field(widget_id, 10212, 10217, 10218, 10215, 10213);

该函数返回给定列表中所选列中的值的位置,我们可以使用它对结果集进行排序。

关于mysql - 为什么这个简单的 MySQL 查询排序为 "by itself",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43850634/

相关文章:

mysql查询在一列中显示行数据

php - 在树莓派上安装 MySQL、PHP 和 Apache

mysql::value::FromValue 在调用 mysql::from_row 时没有为大元组实现

sql - MySQL alter table 中 RENAME 比 DROP+ADD 更快

mysql - 远程连接到 GCP Compute Engine 虚拟机上的 MySQL

mysql - HeidiSQL 更改了外键,phpMyAdmin 看不到它们

mysql - 为什么 MySQL 卡在这个简单的子查询上?

mysql - 多对多关系SELECT问题

mysql - 如何组合 select 语句,每个语句在不同的列中

sql - 将 Rails 查询更改为纯 SQL