ash*_*ish 3 mysql sql union sql-null
基于以下声明
select null
union
select null
Run Code Online (Sandbox Code Playgroud)
上述语句的输出是:
null
Run Code Online (Sandbox Code Playgroud)
虽然这个声明:
select null
union all
select null
Run Code Online (Sandbox Code Playgroud)
输出:
null
null
Run Code Online (Sandbox Code Playgroud)
那么null <> null
这里如何处理 null 值以及在哪种数据类型中考虑它?
在 SQL 中:
UNION
是一个集合运算符,涉及检查(并抑制)重复行如果两个值都为空值,或者根据第 8.2 节“<比较谓词>”,它们比较相等,则称两个值不不同。否则它们是不同的。如果两行(或部分行)至少一对各自的值不同,则它们是不同的。否则它们就没有区别。评估两个值或两行是否不同的结果永远是未知的。
(以上是 SQL-92 规范的摘录,重点是我的)。所以,在这个例子中:
select null
union all
select null
Run Code Online (Sandbox Code Playgroud)
这两行被认为是彼此重复的,因为第一列中的空值被认为是不不同的......即相同。根据定义,UNION
仅返回一组重复行中的一行。
归档时间: |
|
查看次数: |
22795 次 |
最近记录: |