【问题标题】:SQL SELECT foreign key rows that have no rows in child tableSQL SELECT 子表中没有行的外键行
【发布时间】:2012-04-24 18:13:28
【问题描述】:

即使没有从 ALLOCATION 表中的任何行调用它们,我仍需要以下代码来显示 AUTHOR 表中的行。目前,该代码显示所有具有适当外键数据的 ALLOCATION 行。我需要它来显示 AUTHOR 表中的所有行,即使它们没有对应的 ALLOCATION 行。

SELECT authid,sname,fname,B.bid
FROM ALLOCATION A
INNER JOIN BOOK B
ON A.bid = B.bid
INNER JOIN AUTHOR U
ON A.authid = U.authid
ORDER BY authid;

即AUTHOR表中的某些行是ALLOCATION表中0行的外键。我需要它们也出现在 SELECT 中。 authid、sname 和 fname 是 AUTHOR 表的列。

【问题讨论】:

    标签: sql select inner-join


    【解决方案1】:
    select authid,
        sname,
        fname,
        B.bid
    from AUTHOR U
    left outer join ALLOCATION A on A.authid = U.authid
    left outer join BOOK B on A.bid = B.bid
    order by authid
    

    【讨论】:

      【解决方案2】:

      你想使用一个叫做outer join的东西。

      不是INNER,而是说LEFT OUTERRIGHT OUTER,具体取决于方向。

      这样做是如果另一个表中没有对应的记录,则用null填充列。

      【讨论】:

        猜你喜欢
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-30
        • 1970-01-01
        • 1970-01-01
        • 2016-01-23
        • 1970-01-01
        相关资源
        最近更新 更多