MySQL If Else Statment


MySQL If Else Statment

查询示例:

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之前…)