问题是 “找到那些不管理任何项目的项目经理,列表名称和ID”
第一个表是“PM”,第二个表是“Projects” 怎么写这个查询?我尝试了以下查询,但它没有用。
select a.ID,a.name
from PM a,Projects b
where a.ID=b.ID
group by a.name
having COUNT(b.ID)=0;
答案 0 :(得分:3)
你不能在这里做左联:
SELECT
a.ID, a.name
FROM PM a
LEFT JOIN Projects b
ON a.ID = b.ID
WHERE b.ID IS NULL
但你的桌面结构对我来说并不清楚。让经理ID列在两个表中具有相同的名称是令人困惑的。
此外,您在当前查询中进行了隐式内连接。不是邪恶的,但它肯定会让你更难看出你如何联系这两张桌子。有了明确的左连接,希望很清楚这里发生了什么。那些没有项目的PM
中的经理记录因此与没有项目记录匹配。此标记将是(单个)管理器记录,其所有项目列都为空。