我有一个客户表和一个地址表。每个客户可以在地址表中有多个条目,但这些条目中只有一个可以标记为“主要”。我把查询放在一起以提取客户及其主要地址,如下所示:
SELECT * FROM customers LEFT JOIN addresses
ON customers.cust_id = addresses.cust_id
WHERE customers.status = 1 AND addresses.primary = 1
我发现一个缺陷,如果客户尚未在其帐户中添加地址,则不会显示,因为没有“主要”地址。
解决这个问题的最佳方法是什么?
答案 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)