我有一张 table :
Id -- Column1 -- Column2 -- ....
我想按 Column2 降序选择所有行,其中 Id = 1234 且 Column1 为 NULL:
SELECT *
FROM my_table
WHERE Id = 1234 AND Column1 is NULL
ORDER BY column2 DESC
加上
Column2 中 Id = 1234 且 Column1 不为 NULL 的具有最大值的 1 行:
SELECT *
FROM my_table
WHERE Id = 1234 AND Column1 is NOT NULL
ORDER BY column2 DESC
LIMIT 1
如何将这两个 SQL 查询合并为一个?
最佳答案
如果你使用UNION ALL
语句你可以合并两个不同的查询结果。
UNION
语句中的 ALL
选项不会删除重复的行。这是因为您也会在第一个查询中获得 column2 的最大值。
试试这个:
SELECT t.* FROM
(SELECT id, column1, column2
FROM my_table
WHERE Id = 1234 AND Column1 is NULL
UNION ALL
(SELECT id, column1, column2
FROM my_table
WHERE Id = 1234 AND Column1 is NOT NULL
ORDER BY column2 DESC
LIMIT 1)) as t
ORDER BY t.column2 DESC
关于mysql - SQL:按Column2降序选行,Column1不为NULL时只显示1条结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41050754/