我有这个sql:
SELECT logins.*, users.*, invoices.number
FROM logins,
users,
invoices
WHERE logins.user_id = users.id
AND users.id = invoices.userId;
这是我的陈述的简化版本。现实更加复杂。
何时
users.id = invoices.userId
是错误的(因为表格发票不包含带有该userId的行),我需要添加到发票中。number = 0。
答案 0 :(得分:1)
使用left join
返回行,即使找不到发票也是如此。对于这些行,invoices
表中的列将为null
。在这种情况下,您可以使用coalesce
返回0
而不是null
:
SELECT logins.*
, users.*
, COALESCE(invoices.number, 0) AS number
FROM logins
JOIN users
ON logins.user_id = users.id
LEFT JOIN
invoices
ON users.id = invoices.userId
答案 1 :(得分:0)
使用显式连接而不是逗号分隔的连接
SELECT logins.*, users.*, invoices.number
FROM logins
join users on logins.user_id=users.id
join invoices on users.id=invoices.userId;