Mysql 基于连接条件的条件内部连接或左连接
我有一个问题Mysql 基于连接条件的条件内部连接或左连接,mysql,sql,join,left-join,inner-join,Mysql,Sql,Join,Left Join,Inner Join,我有一个问题 SELECT users.email AS email, addons.sku AS sku, addons.quantity as quantity, invoices.total as total FROM addons INNER JOIN users ON 1=1 and users.id = addons.user_id LEFT JOIN invoices ON 1=1 AND invoices.user_id = users.id AN
SELECT
users.email AS email,
addons.sku AS sku,
addons.quantity as quantity,
invoices.total as total
FROM addons
INNER JOIN users ON 1=1
and users.id = addons.user_id
LEFT JOIN invoices ON 1=1
AND invoices.user_id = users.id
AND invoices.status != 3
以下是我需要做的事情:
- 如果用户根本没有发票,我们应该将其包含在
总计中,并返回
NULL
- 如果用户的发票状态为
我们应该包括它们!=3
- 如果发票存在且状态为3,则应将其排除在外
内部连接
和左连接
我如何才能做到这一点?这就是您需要的:
SELECT
users.email AS email,
addons.sku AS sku,
addons.quantity as quantity,
invoices.total as total
FROM addons
INNER JOIN users
ON users.id = addons.user_id
LEFT JOIN invoices
ON invoices.user_id = users.id
WHERE invoices.status IS NULL OR invoices.status != 3
说明:
- 结果中包括没有发票的用户,发票总额为“空”。这就是左连接的作用
- 具有发票状态的用户!=包括3个,他们的发票也包括在内。因此,将其添加到where子句中(记住,
可能是status
,因为上面的NULL
)LEFT JOIN
- 不包括发票状态为3的用户。使用
子句执行此操作WHERE