SQL仅返回id';存在于另一个表中的

SQL仅返回id';存在于另一个表中的,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,如何从检查类型\维度表中返回仅存在于检查类型\主表中的检查类型\维度id 我应该只返回5个结果,但我得到6个,因为我试图加入名称: WHERE EXISTS (SELECT check_type_id FROM check_type_master CTM WHERE CTM.check_type_name = CTD.check_type_name) 问题是,check\u type\u dim\u id是一个审计表,可能有重复的名称 表:检查类型\维度包含以下信息: 表Check\u

如何从
检查类型\维度
表中返回仅存在于
检查类型\主表中的
检查类型\维度id

我应该只返回5个结果,但我得到6个,因为我试图加入名称:

WHERE EXISTS
(SELECT check_type_id FROM check_type_master CTM WHERE 
 CTM.check_type_name = CTD.check_type_name)
问题是,
check\u type\u dim\u id
是一个审计表,可能有重复的名称

表:
检查类型\维度
包含以下信息:

Check\u Type\u Master
包含以下信息:


如果我理解正确,应该可以解决您的问题:

SELECT check_type_dim_id FROM Check_Type_Dimension
WHERE check_type_dim_id IN (SELECT check_type_dim_id FROM Check_Type_Master)

通常,您可以在子查询中使用
IN
运算符,将某些列限制为子查询返回的集合(它必须是一列表)。

如果我理解正确,应该可以解决您的问题:

SELECT check_type_dim_id FROM Check_Type_Dimension
WHERE check_type_dim_id IN (SELECT check_type_dim_id FROM Check_Type_Master)

通常,您可以在子查询中使用
IN
运算符,将某些列限制为子查询返回的集合(它必须是一列表)。

您应该在id和名称上链接EXISTS中的两个表

因为当维度表有两个同名的不同id(“会员费”)时,您的查询会给出额外的结果

例如:


您应该链接中的两个表,它们在id和名称上都存在

因为当维度表有两个同名的不同id(“会员费”)时,您的查询会给出额外的结果

例如:


您是否匹配名称字段或检查名称字段您的SQL与
存在
似乎与架构不对应。什么是
名称
属性?您能提供完整的SQL和预期结果吗?@Amit-对不起,当我说name时,我指的是check\u type_name@RadimBača-我已修改了提取的查询。您是匹配名称字段还是检查名称字段?您的SQL与
存在
似乎与架构不对应。什么是
名称
属性?您能提供完整的SQL和预期结果吗?@Amit-对不起,当我说name时,我指的是check\u type_name@RadimBača-我已修改了提取的查询。
select check_type_dim_id
from Check_Type_Dimension CTD 
where exists (
   select 1
   from Check_Type_Master CTM
   where CTM.check_type_id = CTD.check_type_id
     and CTM.check_type_name = CTD.check_type_name
);