Sql server 如何通过比较两个表来查找0值记录

Sql server 如何通过比较两个表来查找0值记录,sql-server,sql-server-2008,Sql Server,Sql Server 2008,问题是 找到那些不管理任何项目的项目经理,列出姓名和id 第一个表是PM,第二个表是项目 如何编写此查询?我尝试了下面的查询,但没有成功 select a.ID,a.name from PM a,Projects b where a.ID=b.ID group by a.name having COUNT(b.ID)=0; 你不能在这里做一个左连接吗: SELECT a.ID, a.name FROM PM a LEFT JOIN Projects b ON a.ID

问题是 找到那些不管理任何项目的项目经理,列出姓名和id

第一个表是PM,第二个表是项目 如何编写此查询?我尝试了下面的查询,但没有成功

select a.ID,a.name 
from PM a,Projects b
where a.ID=b.ID
group by a.name
having COUNT(b.ID)=0; 

你不能在这里做一个左连接吗:

SELECT
    a.ID, a.name 
FROM PM a
LEFT JOIN Projects b
    ON a.ID = b.ID
WHERE b.ID IS NULL
但是你的桌子结构我一点也不清楚。让两个表中的manager ID列具有相同的名称是令人困惑的


另外,您在当前查询中执行隐式内部联接。这并不是坏事,但它确实让人更难看出你是如何将这两张表联系起来的。有了一个明确的左连接,希望这里发生的事情是清楚的。因此,PM中没有项目的经理记录将与没有项目记录的经理记录相匹配。此标记将是一个管理器记录,其所有项目列均为空。

您不能在此处进行左联接吗:

SELECT
    a.ID, a.name 
FROM PM a
LEFT JOIN Projects b
    ON a.ID = b.ID
WHERE b.ID IS NULL
但是你的桌子结构我一点也不清楚。让两个表中的manager ID列具有相同的名称是令人困惑的


另外,您在当前查询中执行隐式内部联接。这并不是坏事,但它确实让人更难看出你是如何将这两张表联系起来的。有了一个明确的左连接,希望这里发生的事情是清楚的。因此,PM中没有项目的经理记录将与没有项目记录的经理记录相匹配。此标记将是一个管理器记录,其所有项目列均为空。

正是我要写的内容。正是我要写的内容。请尝试不要使用PM a、project bIn的关联联接来读取代码,看起来您的描述在哪个表上是向后的,但是提供的答案仍然正确。请尝试不要使用PM a的关联联接,在阅读代码时,您的描述在哪个表上是向后的,但是提供的答案仍然正确。