如何使用if语句联接(有条件)

时间:2019-07-06 04:58:35

标签: php mysql join select left-join

仅当值不为null时,我才想在MySQL中执行JOIN。例如:

$db = "SELECT users.name, users.email, cars.name
FROM users
LEFT JOIN cars ON cars.id = users.car_id
WHERE users.id = :id"

但是该语句不起作用,因为如果users.car_id为null,它将不会返回任何内容。

相反,我仍然希望结果出来,显然cars.name将是null。有什么办法做到这一点?

1 个答案:

答案 0 :(得分:0)

尝试将原始查询变成子查询,然后再次与users表一起LEFT JOIN。即使原始查询返回NULL,这也应该显示users表中的每个名称:

SELECT u.name,v.* FROM users u 
     LEFT JOIN
     ( SELECT users.name AS UserName, users.email, cars.name
        FROM users
        LEFT JOIN cars ON cars.id = users.car_id
        WHERE users.id = :id ) v 
ON u.name=v.UserName;