DB - Oracle和MSSQL
如何获得差异B? A是我需要的 - 但是如果B中存在类似的记录,则不要显示它。 这里类似意味着2列相同。 [这使得它独特btw] 我所知道的关于A和B的所有内容都是有2列组合是UNIQUE记录。 在下面的例子中说出国家和城市。它可能有完全不同的列,但每个国家和城市有一条记录,我需要在其上进行差异操作。
我有2张桌子,其中一张表示我感兴趣的国家和城市。
Country City Population Dentiy
USA NewYork 10 mil
USA Nevada 1 mil
Usa Penn 3 mil
另一张表格上写着“我有一些受调查城市的名单,如果你有这个表中的数据你没有做任何事,我们会为你得到它”。
Usa NewYork
SA Capetown
我想要A差异B,即A中存在但不存在B的事物。 A也可能有其他列...如果A中的国家城市在B中,我不想要那个记录。 我如何实现这一目标?
PS:表A和B可能是动态计算机的!使用子查询,所以我可以使用A as和B作为...
* A是动态生成的表,与B * 相同,因此我需要使用合适的别名。答案应该假设这个先决条件。
答案 0 :(得分:1)
A减B:
SELECT
a.*
FROM a
LEFT OUTER JOIN b ON (a.key = b.key)
WHERE b.key IS NULL
或(MSSQL):
SELECT col1,col2,col3 FROM a
EXCEPT
SELECT col1,col2,col3 FROM b