我有一个奇怪的场景,我需要将所有行保留在顶部,其中 X 列具有 NULL 值,否则按 Y 列排序。你能帮我写查询吗?
问问题
245 次
6 回答
5
ORDER BY CASE WHEN X IS NULL THEN 0 ELSE 1 END, Y
于 2013-09-16T03:51:17.923 回答
4
您可以在以下位置使用CASE语句ORDER BY
:
ORDER BY
CASE WHEN X IS NULL THEN 0 ELSE 1 END ASC, Y
于 2013-09-16T03:53:09.133 回答
1
在这里,这将适用于任何 sql 平台——对于特定平台,可能有更好的方法来做到这一点。
SELECT * FROM
(
SELECT 1 AS orderC, *
FROM tableName
WHERE Xcolumn is null
UNION ALL
SELECT 2 AS orderC, *
FROM tableName
WHERE Xcolumn is not null
)
ORDER BY orderC ASC, columnY
请注意,如果您不希望 orderC 在输出中,只需在外部选择中指定所有其他列。
于 2013-09-16T03:49:09.917 回答
0
SELECT * FROM TABLENAME ORDER BY X ,Y
于 2013-09-16T05:20:55.920 回答
0
您可以使用如下查询:
SELECT * FROM Emp WHERE empId= 6 AND DELETED = 0
ORDER BY CASE WHEN DOB IS NULL THEN 0 ELSE 1 END
, CREATETIMESTAMP.
有关更多详细信息,您可以在此处查看
于 2013-09-16T06:55:16.483 回答
0
分享我在使用之前学到的东西:
ORDER BY FIELD(Xcolumn, NULL) DESC, Ycolumn DESC
于 2013-09-16T03:56:08.077 回答