我被困在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
答案 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中每个查询的列列表必须相同,否则您将收到错误。