这是我现在的代码:
SELECT id, number
FROM Media
WHERE user = 10
ORDER BY id, number
但我希望它看起来像:
SELECT id, number
FROM Media
WHERE user = 10
ORDER BY while(number IS NULL), id
我想要做的是让所有number
NULL
位于结果的顶部,但很快number
不是NULL
,请按{排序} {1}}
这可能吗?
我使用mysql。
答案 0 :(得分:20)
这样的事情:
SELECT id, number
FROM Media
WHERE user = 10
ORDER BY (case when number is null then 0 else 1 end), id
如果number为NULL,则按条件的第一个顺序为0;否则1
这意味着每行将编号为NULL的行将在其他行之前
请注意,无论如何,ids也会被排序。
你会得到这样的东西:
答案 1 :(得分:1)
如果参数为null,则ISNULL()函数返回1,否则返回0。
SELECT id, number
FROM Media
WHERE user = 10
ORDER BY ISNULL(number) DESC, id
请注意,性能可怕取决于需要订购多少个值:根据ORDER BY列不会使用任何索引。
答案 2 :(得分:-1)
也可以使用Union。
SELECT id, number
FROM Media
WHERE user = 10 AND number IS NULL
ORDER BY id
UNION
SELECT id, number
FROM Media
WHERE user = 10 AND number IS NOT NULL
ORDER BY id, number;