我有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