我有2个表,我希望获取的行不相等。如何编写查询?如何在SQL查询中获得不相等的行
例如,table a
包含10行,table b
包含10行。在A和B 平等行是5
我想借此不等于行(未在B表)
如何获取一个表值不等于B表?
结果应该是5条
我有2个表,我希望获取的行不相等。如何编写查询?如何在SQL查询中获得不相等的行
例如,table a
包含10行,table b
包含10行。在A和B 平等行是5
我想借此不等于行(未在B表)
如何获取一个表值不等于B表?
结果应该是5条
使用EXCEPT
的语法类似于相交。 https://www.tutorialspoint.com/sql/sql-intersect-clause.htm
相交是相同的值只显示 – user2587029
采取排在A,但不是在B:
select * from A minus select * from B
若要在无论是在一个行和B而不是:
(select * from A union select * from B) minus (select * from A intersect select * from B)
减去不给出正确的答案。它给两个表不等价值。我只想要一个表值 – user2587029
这个问题早就已经解决了。最佳解决方案只读取一次表格(不同于每次读取表格两次并执行一些额外工作的“对称差异”解决方案)。
select 'A' as source, col1, col2, ...
from table_A
union all
select 'B' as source, col1, col2, ...
from table_B
group by col1, col2, ...
having count(*) = 1
;
如果行是本两个表中,则该计数是2
这假定有在两个表中没有重复的行;如果可能存在重复行,则可以修改HAVING条件,例如:
having count(case when source = 'A' then 1 end) = 0
or count(case when source = 'B' then 1 end) = 0
减号未给出正确答案。它给两个表不等价值。我只想要一个表值 – user2587029