mysql order by field order 不符合我的期望

标签 mysql

我想使用 FIELD 参数对我的 SQL 输出进行排序,但是当我这样做时,它首先吐出我不想要的结果,然后它首先吐出我想要的结果。在结果之上,它首先吐出。如果这有意义的话 ;)

如何先吐出已定义的值,然后再吐出其余值?

SQL查询:

SELECT * FROM `product_specs` WHERE itemid = '$id' ORDER BY FIELD(spec_type, 'value 1', 'value 2');

当前输出:

Value 5 
Value 6

Value 1
Value 2

想要的输出:

Value 1
Value 2 

Value 5
Value 6

我知道 case 参数,但我不想使用它,因为它不太容易更新。

谢谢

最佳答案

ORDER BY 子句中使用 CASE,将 0(未找到)转换为 999(在所有值之后),如:

SELECT * 
FROM `product_specs` 
WHERE itemid = '$id' 
ORDER BY case 
  when FIELD(spec_type, 'value 1', 'value 2') = 0 then 999
  else FIELD(spec_type, 'value 1', 'value 2') end

关于mysql order by field order 不符合我的期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55580923/

相关文章:

php - Arduino UNO、C3300 + PHP 网络服务挑战

java - 使用 JPA 2.1 将 EnumSet 映射到 mysql Set

MySQL TRIGGER ON INSERT 问题

mysql - mysql GROUP_CONCAT 和 INSERT 到另一个表的问题

Mysql 内存不足(需要 536870945 字节)

mysql - 错误 "Not allowed to return a result set from a trigger"

MySQL 5 更新后触发器不起作用

mysql - JPA 中的跨数据库连接

php - 按国家/地区过滤 mysql 中的数据

mysql - 为什么将多行合并为一列会重复数据?