MySQL Order By a number,最后一个空字符串(0's)

标签 mysql sql-order-by

刚刚问了一个与这个非常相似的问题......

目前我正在我的声明中做一个非常基本的 OrderBy。

SELECT * FROM tablename WHERE visible=1 ORDER BY position ASC, id DESC

问题是“position”的空字符串条目被视为 0。因此,所有 position 为空字符串的条目都出现在 1、2、3、4 的条目之前。例如:

'', '', '', 1, 2, 3, 4

或:

0, 0, 0, 1, 2, 3, 4

有没有办法实现如下排序:

1, 2, 3, 4, '', '', ''.

或:

1, 2, 3, 4, 0, 0, 0.

我认为该解决方案可能具有某种替换功能,但我无法找到可以满足我要求的功能。

最佳答案

SELECT * 
FROM tablename 
WHERE visible=1 
ORDER BY 
    case when position in('', '0') then 1 else 0 end,
    position ASC, 
    id DESC

关于MySQL Order By a number,最后一个空字符串(0's),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2052216/

相关文章:

c# - 使用 SUM 和 ORDER BY 的 Linq 查询

MYSQL 跨多个表的计数查询

mysql - 查询 : I have 4 rows, 需要将 3 行的结果相加,最后一行保持不变

php - 如何在 PHP 中正确创建自定义函数?

FreeBSD jail 上的 PHP、Apache 和 MySQL

php - 表单域输入空比不更新

symfony - Doctrine 2 : OneToMany Relation, 按外键排序

mysql - 按 ASC 排序 DATE_FORMAT '%Y-%c'

mysql - 对 MySql 表的列进行排序并仅显示不同的值

sql - SQL 中按大小写结果排序