从主键列的引用表中查找记录

时间:2018-04-13 07:06:14

标签: sql-server linq sql-server-2012

我被困在sql查询中,我必须找到存在于任何引用表中的记录。即。

主表:A,列是a_id

外部表:B,C,D,其中a_id是外键无效列,在这些表中,记录可能包含a_id值或空值。

所以我想创建一个查询,如果a_id存在于任何一个引用表中,它将返回数据。

我尝试使用左连接但是它总是返回1条记录,因为我从A表中选择记录。

请看这个:

select * from A tp
left join B altl on tp.a_id = altl.a_id
left join C sd on tp.a_id = sd.a_id 
left join D st on tp.a_id = st.a_id where tp.a_id = 46

1 个答案:

答案 0 :(得分:1)

这样的事情:

select <columns>
from B
where a_id = 46
union all
select <columns>
from C
where a_id = 46
union all
select <columns>
from D
where a_id = 46

您在查询中不需要表A,只需要您感兴趣的值,同样,UNION中每个查询的列列表必须相同,否则您将收到错误。