当子记录不总是存在时,MYSQL左连接过滤

时间:2017-02-24 18:34:41

标签: mysql

MYSQL

父表

customer
C_Id
First
Last

子表

付款

P_Id
Paid (logical)
C_Id

所有客户记录在付款表中都没有子记录。 想要检索除付款表where pay = True中包含子记录的客户记录以外的所有客户记录。付费逻辑字段中的数据可能为True,False或NULL 因此,记录的结果集将排除已经支付的任何客户。

Left Join给了我这个:

1 Harry Houdini
2 Johnny Bench
3 Clark Gable     Null
4 John Galt       False
5 Nick Cage       True
6 Casey Cason

期望的结果是

1 Harry Houdini
2 Johnny Bench
3 Clark Gable     Null
4 John Galt       False
6 Casey Cason

此记录不符合条件,因此从查询中排除

5 Nick Cage       True

1 个答案:

答案 0 :(得分:0)

试试这个

 select * from customer c 
 join payment p 
 on c.c_id = p.c_id where pay = 'false' or pay is NULL;

您无法使用left join获得这些输出,因为使用左连接可以获得整个表格。您可以使用inner join

执行此操作