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