Sql 连接两个表并需要返回ID相同但条件不同的结果
由于缺乏SQL知识,我现在非常困惑 我有两个表,其标准如下:Sql 连接两个表并需要返回ID相同但条件不同的结果,sql,Sql,由于缺乏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
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)
我知道这是一个真正的初学者的问题,但我真的需要帮助 我想您需要一个左外连接:
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
这将获取计划表中的所有行,并尝试根据upc和国家代码在另一个表中查找匹配项。如果没有匹配项,则仍保留该行,但第二个表的值为空值。因此,最后一个where子句选择第一个表中的值,而不是第二个表中的值。使用外部联接。下面的语句提供了表1的所有记录和表2的匹配项。如果未找到匹配项,则会得到空值:
select *
from CPRSLRScheduled cprs
left outer join R2LRDig r2 on cprs.UPC = r2.upc and cprs.country_iso_code = r2.country_id
如果没有另外指定,JOIN不是内部连接的同义词,而不是左外部连接的同义词吗?@MatBailie。非常感谢。修正了。大家好,谢谢你们的帮助!
select *
from CPRSLRScheduled cprs
left outer join R2LRDig r2 on cprs.UPC = r2.upc and cprs.country_iso_code = r2.country_id