Liz*_*zie 11 sql oracle oracle10g
我有2张桌子A和B.
SELECT COUNT(*) FROM (SELECT * FROM tableA)
Run Code Online (Sandbox Code Playgroud)
返回389
SELECT COUNT(*) FROM (SELECT * FROM tableB)
Run Code Online (Sandbox Code Playgroud)
返回217
SELECT COUNT(*) FROM
(SELECT * FROM tableA
INTERSECT
SELECT * FROM tableB)
Run Code Online (Sandbox Code Playgroud)
返回0
SELECT COUNT(*) FROM
(SELECT * FROM tableA
MINUS
SELECT * FROM tableB)
Run Code Online (Sandbox Code Playgroud)
返回389
SELECT COUNT(*) FROM
(SELECT * FROM tableB
MINUS
SELECT * FROM tableA)
Run Code Online (Sandbox Code Playgroud)
返回89
有人可以解释为什么最后一个查询返回89而不是217?
Jef*_*emp 20
MINUS获取第一个结果集,并删除第二个结果集中存在的任何结果集; 它也删除任何重复.
在您的示例中,tableA有389行,tableB有217行; 你的INTERSECT显示没有共同的行,这意味着tableA MINUS tableB是389行(即所有这些行).
tableB MINUS tableA返回tableB中不同的行集,因此tableB中有89个不同的值.
akz*_*ere 10
假设你有A和B,A = {1,2,3,4}和count(A)= 4,B = {5,6,6,7,7}和count(B)= 5
AB = {1,2,3,4}因此计数(AB)=计数(A)= 4
但BA = {5,6,7}且计数(B)= 3
因此,我们在此理解的是,减去了重复的术语(或行).这就是行数从217减少到89的原因.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
36173 次 |
| 最近记录: |