打印表1中的所有数据和表2中的匹配数据,但如果表2为空怎么办

  • 本文关键字:数据 如果 怎么办 打印 sql
  • 更新时间 :
  • 英文 :


在学习SQL时,我遇到了这个问题。

假设我有两个表:
table1,它包含两列
>iddata1

table2

在两种不同的场景中,我如何打印出表1中的所有数据,以及仅打印出表2的匹配数据
场景1:table1.id=1
场景2:表2为空怎么办(但我仍然想打印出表1中的所有数据(

所以我的方法是场景1:

Select table1.id, table1.data1, table2.data2
From table1 
Inner Join table2 On table1.id=table2.p_id
Where table1.id = 1;

场景2:

Select table1.id, table1.data1, table2.data2
From table1 
Inner Join table2 On table1.id=table2.p_id
Where table1.id = 1 and table2.data2 is not null;

对于第二个场景,您正在描述left join:

Select table1.id, table1.data1, table2.data2
From table1 left Join
table2
On table1.id = table2.p_id  
where table1.id = 1 ;

因为您在第一个表上进行筛选,所以条件保留在where子句中。如果你想在第二张表上过滤,你可能想要这样的东西:

Select table1.id, table1.data1, table2.data2
From table1 left Join
table2
On table1.id = table2.p_id and
table2.col = 'xyz';

相关内容

最新更新