我有一張桌子
表1:最終表包含所有資料。ID 和 IDS 是復合鍵
ID IDS name
1 PL35 Bumper
151111 PL35 Bumper
151111 PL36 Bumper
1516 PL35 TUMI
151511 PL36 Limo
151521 PL35 Superb
151521 PL36 Superb
表 2:它是一個預決算表,它將包含不完整資訊的即將到來的資料
ID IDS name
15100 PL35 NULL
1516 PL35 NULL
151521 PL36 NULL
151511 PL36 NULL
預期結果:一些 ID (ID IDS) 在表 1 中,一些在表 2 中。我需要比較表 1 和表 2 的資料。規則是用表1資訊保留公共資料 用(id IDS)保留新行,在表2中但不在表1中
例如;
- (15100 PL35) 在表 2 中但不在表 1 中,那么它將保留
- (1516 PL35) 在兩者中都很常見,那么表 1 中的行將保留。
- (151511 PL36)也很常見,因此將保留。
- 不需要表 2 中但表 1 中的資料(ID IDs)。
ID IDS name
15100 PL35 NULL
1516 PL35 TUMI
151511 PL36 Superb
到目前為止我只想到這個
select * from table1 t1
inner join table2 t2 on t1.id=t2.id
uj5u.com熱心網友回復:
使用以等效集合操作命名的 INTERSECT。
SELECT
ID,
IDS
FROM
table1
INTERSECT
SELECT
ID,
IDS
FROM
table2
編輯 在回答您的問題時,您可以將其包裝在 CTE 中,然后重新加入 table1。
WITH common AS
(
SELECT
ID,
IDS
FROM
table1
INTERSECT
SELECT
ID,
IDS
FROM
table2
)
SELECT
c.*,
t.Name
FROM common c
INNER JOIN
table1 t
ON c.ID = t.ID
AND c.IDS = t.IDS
uj5u.com熱心網友回復:
我認為您可以使用 FULL OUTER JOIN,并設定 WHERE 條件 WHERE t1.id NOT NULL 和 t2.id NOT NULL。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/404972.html
標籤:
