0

DB - Oracle および MSSQL

A 差 B を取得するにはどうすればよいですか? A は必要なものですが、B に同様のレコードが存在する場合は表示しないでください。ここでの類似は、2 つの列が同じであることを意味します。[これによりユニークになります] A と B について私が知っているのは、2 つの列の組み合わせが UNIQUE レコードであるということだけです。以下の例では国と都市を言います。まったく異なる列が含まれている可能性がありますが、国と都市ごとに 1 つのレコードがあり、差分操作を行う必要があります。

2 つのテーブルがあります。1 つは、ここに関心のある国と都市です。

Country City       Population Dentiy
USA     NewYork    10 mil
USA     Nevada     1  mil
Usa     Penn       3  mil

別の表には、「何人かの担当者が調査した都市のリストがあります。この表にデータがあれば、何もしなくても取得できます」と書かれています。

B

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 に答える