我试图编写一个SQL语句来从数据库中检索用户列表,以及他们的公司名称(如果他们有一个公司与他们关联)。然而,有几个问题:
不是所有的用户都有公司,但我仍然需要在列表中显示这些人。
即使用户有公司,也可以软删除该公司(记录仍在数据库中,但标记为is_deleted=1),我不想显示与“已删除”公司关联的用户。
所以本质上我想从用户表中选择并左键加入公司表,但如果分配给他们的公司被删除,我根本不想包括用户记录。
我的第一个倾向是,我必须使用一个联合来将两个查询合并在一起,但我希望有一个更干净的方法来做这件事?
使用Mysql 5.1

最佳答案

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为空表示没有公司的用户,C.IS_deleted=0表示没有软删除公司的用户。

10-07 19:10
查看更多