标准sql定义 EXCEPT ALL
操作如下(postgres fiddle)
CREATE TABLE T1(X INT);
CREATE TABLE T2(X INT);
INSERT INTO T1 VALUES (1),(1),(2);
INSERT INTO T2 VALUES (1),(2);
SELECT X
FROM T1
EXCEPT ALL
SELECT X
FROM T2
这是回报
+---+
| X |
+---+
| 1 |
+---+
因为有一个额外的 1
划入 T1
与 T2
.
sql server只允许 EXCEPT
以及
SELECT X
FROM T1
EXCEPT
SELECT X
FROM T2
返回空结果集。如何实施 EXCEPT ALL
?
3条答案
按热度按时间j0pj023g1#
EXCEPT ALL
sql server不支持。和table在一起以及
查询
会回来的
因为t1比t2多包含两(1 | 1)行、一(1 | 2)行和一(1 | 3)行。
要在sql server中实现同样的效果,请对行进行编号:
nfs0ujit2#
尝试where not exists子句,这将允许您不获取不同的列表。
通过运行上述代码,可以看到where not exists子句和except之间的不同结果集。
希望这有帮助。
bzzcjhmw3#
根据定义,
EXCEPT
从左输入查询返回右输入查询未输出的不同行。sql小提琴
ms sql server 2017架构设置:
查询1:
结果:
问题2:
结果: