Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接两个表并需要返回ID相同但条件不同的结果_Sql - Fatal编程技术网

Sql 连接两个表并需要返回ID相同但条件不同的结果

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

由于缺乏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)
我知道这是一个真正的初学者的问题,但我真的需要帮助

我想您需要一个左外连接:

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