我正在尝试编写一个SQL语句来检索数据库中的用户列表,以及他们的公司名称(如果他们有与之关联的公司)。但是,有一些问题:
基本上我想从User表中选择SELECT并LEFT JOIN公司表,但是如果他们被分配到的公司是is_deleted,我根本不想要包含用户记录。
我的第一个倾向是我必须使用UNION将两个查询合并在一起,但我希望有更清洁的方法来做到这一点?
使用Mysql 5.1
答案 0 :(得分:2)
SELECT U.name Username, C.name Company
FROM User U
LEFT OUTER JOIN Company C
ON U.companyid = C.id
WHERE C.id IS NULL OR C.is_deleted = 0
C.id IS NULL获取没有公司的用户,C.is_deleted = 0获取未被软删除的公司的用户。
答案 1 :(得分:1)
尝试加入排除已删除公司的表格:
SELECT U.Name, C.Name
FROM User U LEFT OUTER JOIN
(SELECT CompanyId, CompanyName
FROM Company
WHERE is_deleted = 0)
C ON U.CompanyId = C.CompanyId