【问题标题】:find record from referenced tables of primary key column从主键列的引用表中查找记录
【发布时间】:2018-04-13 15:14:35
【问题描述】:

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

主表:A,列是a_id

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

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

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

请看这个:

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

【问题讨论】:

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


    【解决方案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 中的每个查询相同,否则您会收到错误消息。

    【讨论】:

    • 谢谢 MJH :),我们也可以在 Linq 中写这个吗?
    • 没问题,我正在把它转换成 Linq。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2018-09-07
    • 2016-04-07
    相关资源
    最近更新 更多