16

反対の、しかし同等の mysql の UNION 関数はありますか?

より長いクエリでこれを行うことが可能であることは知っていますが、同等の機能があるかどうかに興味があります。

2 つの異なるテーブルに対して 2 つの select ステートメントがあります

select state, state_name, id, idname, phone, mobile, home from table1
select state, state_name, id, idname, phone, mobile, home from table2

そして、テーブル1からのみ、テーブル1のidname、phone、mobile、homeがtable2と一致しない場合にのみプルするクエリが必要です

例: Table1 は

AK | Alaska | 1 | row6   | 453  | 567 | 123

しかし、表 2 には次のようなものがあります。

AK | Alaska | 1 | row6   | 453  | 567 | 123
AK | Alaska | 1 | row6   | NULL | 567 | 123
AK | Alaska | 1 | tttttt | 453  | 567 | 123

クエリが表示されます

AK | Alaska | 1 | row6   | NULL | 567 | 123
AK | Alaska | 1 | tttttt | 453  | 567 | 123

表示されません

AK | Alaska | 1 | row6   | 453  | 567 | 123
4

2 に答える 2

31

EXCEPT標準 SQL では、ANSI SQL演算子を使用できます。これは、UNION

SELECT * FROM Table2
EXCEPT
SELECT * FROM Table1

両方のソースに共通する行を表示するINTERSECT セット演算子もあります。

残念ながら、現在のバージョンの MySQL ではこれらのいずれもサポートされていないため、アンチ セミ ジョインを実現するには、他の 3 つの詳細な方法のいずれかを使用する必要があります。

NOT IN 対 NOT EXISTS 対 LEFT JOIN / IS NULL

于 2012-09-27T18:23:37.373 に答える
5

Oracle を使用している場合は、MINUS句を使用します。

statement 1
MINUS
statement 2

また

statement 1
WHERE NOT EXISTS (statement 2)
于 2012-09-27T18:23:40.040 に答える