繁体   English   中英

mysql左连接多个列

[英]mysql left join with multiple where columns

我有一个客户表和一个地址表。 每个客户在地址表中可以有多个条目,但是这些条目中只有一个可以被标记为“主要”。 我将查询汇总在一起,以拉动客户及其主要地址,如下所示:

SELECT * FROM customers LEFT JOIN addresses  
         ON customers.cust_id = addresses.cust_id 
WHERE customers.status = 1 AND addresses.primary = 1

我发现一个缺陷是,如果客户尚未在其帐户中添加地址,则由于没有“主要”地址,他们将不会出现。

解决此问题的最佳方法是什么?

SELECT * 
FROM      customers 
LEFT JOIN addresses 
ON        customers.cust_id = addresses.cust_id
AND       1                 = addresses.primary 
WHERE     customers.status = 1 

尝试将查询修改为AND (addresses.primary = 1 OR addresses.primary IS NULL)

没有地址时,只需包括左侧数据。
在下面的示例中,我使用主字段,但使用addesses表的任何字段
没有匹配键时,在左连接子句中为null。

SELECT * FROM customers LEFT JOIN addresses   
         ON customers.cust_id = addresses.cust_id  
WHERE    customers.status = 1 AND 
         (addresses.primary = 1 OR addresses.primary IS Null) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM