0

数据库 - Oracle 和 MSSQL

我如何获得 A 差异 B ?A 是我需要的 - 但如果 B 中存在类似记录,请不要显示它。此处相似意味着 2 列相同。[这使它变得独一无二] 我对 A 和 B 的了解是有一个 2 列组合是 UNIQUE 记录。在下面的例子中说国家和城市。它可能有完全不同的列,但每个国家和城市都有一条记录,我需要在这些记录上进行差异操作。

我有两张桌子,一张说这里是我感兴趣的国家和城市。

一个

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 中的 Country City 存在于 B 中,我不想要该记录。我该如何做到这一点?

PS:表A和B可能是动态计算机的!使用 subquery ,所以我可以使用 with A as 和 with B as ...

* A 是动态生成的表,与 B * 相同, 所以我需要使用合适的别名。答案应该假设这个前提条件。

4

1 回答 1

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
于 2013-07-03T20:03:46.130 回答