由于缺乏SQL知识,我现在非常困难!
我有两张表符合以下条件:
Table1
UPC
Country
Table2
UPC
Country
我需要查看表1中的所有行以及表2中的相应UPC以及表2中缺少的国家/地区。
例如:
UPC1 |Country1 |UPC2 |Country2
12345 |UK |12345 |UK
12345 |IE |12345 |IE
12345 |DE |NULL |NULL
12345 |FR |12345 |FR
我尝试过以下代码:
select *
from CPRSLRScheduled cprs join R2LRDig r2
on cprs.UPC = r2.upc
where cprs.country_iso_code not in (r2.country_id)
我知道这是一个真正的初学者'问题,但我真的需要帮助!
答案 0 :(得分:0)
select t1.upc,t1.country,t2.upc,t2.country
from table1 t1 inner join table2 t2
on t1.upc=t2.upc where t2.country IS NULL
答案 1 :(得分:0)
我想你想要一个left outer join
:
select *
from CPRSLRScheduled cprs left outer join
R2LRDig r2
on cprs.UPC = r2.upc and
cprs.country_iso_code = r2.country_id
where r2.upc is NULL;
这将获取计划表中的所有行,并尝试根据upc
和国家/地区代码在另一个表中查找匹配项。如果没有匹配,则仍保留该行,但第二个表的值为NULL
值。因此,最后的where
子句选择的是第一个表中的值,而不是第二个表中的值。
答案 2 :(得分:0)
使用外部联接。以下语句为您提供表1的所有记录和表2的匹配。如果未找到匹配项,则会获得NULL值:
select *
from CPRSLRScheduled cprs
left outer join R2LRDig r2 on cprs.UPC = r2.upc and cprs.country_iso_code = r2.country_id