我需要一个帮助。我需要使用MySQL加入多个表。我做了一些编码,如下所示。
select u.user_name
, u.user_id
, p.colg_name
, r.role
, d.dept_name
from db_user u
JOIN db_profile p
ON u.colg_id=p.profile_id
JOIN db_role r
ON u.role_id = r.role_id
JOIN db_department d
ON u.dept_id = d.dept_id
WHERE u.user_type = 3
AND u.role_id != 0
AND u.colg_id != 0
ORDER BY u.user_id DESC
我的问题是,如果db_user
表的dept_id
列值为0
,则此查询无法正常工作。我的要求是在db_user
表{{1}中}列值为dept_id
它与0
表格不匹配,如果db_department
值不是dept_id
则会获取所有其他数据,那么它将与0
匹配表并获取所有数据。请帮助我。
答案 0 :(得分:0)
使用左连接。即使在连接的表中没有相应的记录(dept_id = 0),这也将使您的查询工作。
select u.user_name
, u.user_id
, p.colg_name
, r.role
, IFNULL(d.dept_name,'no department') AS dept_name
from db_user u
JOIN db_profile p
ON u.colg_id=p.profile_id
JOIN db_role r
ON u.role_id = r.role_id
LEFT JOIN db_department d
ON u.dept_id = d.dept_id
WHERE u.user_type = 3
AND u.role_id != 0
AND u.colg_id != 0
ORDER BY u.user_id DESC