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
);