如何从check_type_dim_id
表中专门存在的Check_Type_Dimension
表中返回Check_Type_Master
?
我应该只返回5个结果但是因为尝试加入名字而得到6个结果:
WHERE EXISTS
(SELECT check_type_id FROM check_type_master CTM WHERE
CTM.check_type_name = CTD.check_type_name)
问题是,check_type_dim_id
是一个审核表,可能有重复的名称。
表:Check_Type_Dimension
包含以下信息:
表Check_Type_Master
包含以下信息:
答案 0 :(得分:0)
SELECT CTM.id
FROM check_type_master CTM
JOIN Check_Type_Dimension CTD
ON CTM.check_type_name= CTD.check_type_name AND CTM.check_type_id= CTD.check_type_id
答案 1 :(得分:0)
如果我理解正确,那应该可以解决你的问题:
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
运算符与子查询一起使用,以将某些列限制为子查询返回的集合(它必须是单列表)。
答案 2 :(得分:0)
你应该在id和amp;中链接EXISTS中的2个表。名称。
因为您在Dimension表中有2个不同的id具有相同的名称("会员费用"),那么您的查询将提供额外的结果。
实施例:
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
);