SQL 查询按具有空值的多个列排序

标签 sql null sql-order-by multiple-columns

我有一个像这样的表格(注意:真实的表格有更多的列):

street|zip
-----------
'b'   |0
'a'   |0
'c'   |null
'f'   |1
null  |0
null  |null

我想做这样的查询:

SELECT * FROM locations ORDER BY street, zip

此查询的结果将是这样的:

street|zip
-----------
'a'   |0
'b'   |0
'c'   |null
'f'   |1
null  |0
null  |null

现在的问题是查询必须是什么样子才能产生此输出(甚至可能吗?):

street|zip
-----------
'a'   |0
'b'   |0
'c'   |null
null  |0
'f'   |1
null  |null

如果列的值为空,则应将其忽略/解释为通配符。 我使用的是 PostgreSQL 9.2。

感谢您的帮助。

最佳答案

不,这看起来不可能。您无法为此构建可重现的规则。

如果您将 null 视为通配符,您的第一个示例也将有效。

street|zip
-----------
'a'   |0
'b'   |0
'c'   |null
null  |0
null  |null
'f'   |1

也会的。

关于SQL 查询按具有空值的多个列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24952057/

相关文章:

Mysql - 排序域并忽略任何 www.以一种有效的方式

mysql - 在sql中按升序对 "Apr-19" "Apr-18"日期类型进行排序

mysql - SQL:选择一个表中不存在的键

SQL计划编译和真值表

mysql - 将多列转置为行 - MySQL

mysql - 如果字段为空,为什么 SQL "NOT IN (' val 1')"不返回?

asp.net - 在 ASP.NET 中处理 DBNull 和 null

sql - postgresql,奇怪的 OFFSET/LIMIT 行为(记录顺序)

sql - 在其他表上具有条件的表上的左连接

c# - 最佳实践?打开和关闭多连接,或 ado.net 的一个大打开连接