SELECT distinct ColumnA, ColumnB
FROM Table1, Table2
WHERE Table1.ColumnB = Table2.ColumnB
and ColumnC = '0000'
except
SELECT distinct ColumnA, ColumnB
FROM Table1, Table2
WHERE Table1.ColumnB = Table2.ColumnB
and ColumnC <> '0000'
,如果你想使用一個連接
猜測ColumnC在表2
SELECT distinct Table1.ColumnA, Table1.ColumnB, Table2.ColumnC
FROM Table1
JOIN Table2
on Table1.ColumnB = Table2.ColumnB
and Table2.ColumnC = '0000'
left join Table2 exclude
on Table1.ColumnB = exclude.ColumnB
and exclude.ColumnC <> '0000'
where exclude.ColumnB is null
這可能是表現最好的
SELECT distinct Table1.ColumnA, Table1.ColumnB, Table2.ColumnC
FROM Table1
JOIN Table2
on Table1.ColumnB = Table2.ColumnB
and Table2.ColumnC = '0000'
and not exists (select * from table2 exclude
where exclude.ColumnB = Table1.ColumnB
and exclude.ColumnC <> '0000')
你打算給'NOT IN'和'NOT EXISTS'解決方案嗎? –
@ConradFrix我想到了NOT EXISTS。這可能是表現最好的。我不確定您是否可以在不加入排除內容的情況下離開? – Paparazzi
謝謝,Blam!僅供參考,第一個查詢似乎並沒有排除在哪裏t2.columnc可以是除'0000'以外的其他東西我有一對多的記錄,我可能有'0000'作爲匹配返回記錄的值,但是相同的相關父記錄不能有「0000」以外的任何值被返回並計數。第一個查詢返回96772個記錄另外兩個查詢相互匹配相同的記錄數(57263),也與Conrad Frix提供的查詢匹配。非常感謝兩位如此慷慨地提供解決方案!我是否可以信任一個或兩個人的答案? – rogabone