查询示例:
SELECT tags.serial_number, tags.expiry_date, tags.activation_date, users.email, users.offers, users.newsletter, pets.name as petname
FROM `tags`
JOIN `users` on users.id = tags.user_id
JOIN `pets` on pets.id = tags.pet_id
WHERE users.username = 'myusername' AND users.email = 'itsme@mydomain.com'
在这个场景中,返回的唯一结果是那些同时分配给用户和宠物的标签。但是我想要的是能够接收所有的标签,不管它们是否分配给宠物。
如果有某种"如果有宠物,显示宠物名,否则只是返回宠物名为NULL"或类似的东西?
尝试使用Left Outer Join
,它将填充不与null表连接的行
SELECT tags.serial_number, tags.expiry_date, tags.activation_date, users.email, users.offers, users.newsletter, pets.name as petname
FROM `tags`
JOIN `users` on users.id = tags.user_id
Left Outer JOIN `pets` on pets.id = tags.pet_id
WHERE users.username = 'myusername' AND users.email = 'itsme@mydomain.com'
快速的答案是使用 LEFT JOIN
来代替 JOIN
。
(我敢肯定这个问题已经问过StackOverflow之前…)