mysql左边连接多个where列

时间:2012-08-01 21:22:03

标签: mysql

我有一个客户表和一个地址表。每个客户可以在地址表中有多个条目,但这些条目中只有一个可以标记为“主要”。我把查询放在一起以提取客户及其主要地址,如下所示:

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

我发现一个缺陷,如果客户尚未在其帐户中添加地址,则不会显示,因为没有“主要”地址。

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

当没有地址时,只需包含左侧数据 在下面的示例中,我使用主要字段,但是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)