【问题标题】:SQL Left Join on SelfSQL 左连接自我
【发布时间】:2016-05-23 07:23:44
【问题描述】:

我知道以前有人问过这个问题,并且我已经尝试过我在这里看到的技术。但这只是行不通。

我有一个看起来像这样的“人”表

PersonID、PersonName、PersonYOB、PersonCOB、FatherID

1    Fred Astaire    1963    USA    2
2    Bruce Astaire   1933    USA    NULL
3    Adele Astaire   1961    FR     2
4    Gene Kelly      1965    IT     NULL
5    Lucy Astaire    1935    USA    NULL

我想做的是一个 SELECT,其中父亲的名字来自父亲的 PersonID。我也有母亲,但为了简单起见,我把它去掉了。一旦我让父亲工作,我就会把母亲加回来。

我当前的 SELECT 看起来像这样

SELECT p.*, f.PersonName AS FatherName FROM People 
LEFT OUTER JOIN People f ON
p.PersonID = f.FatherID

我所有的人都出现了,但父名始终为 NULL。

Fred Astaire 应将父亲 ID 2 和 f.PersonName 显示为 Bruce Astaire。 Adele Astaire(他的妹妹)也是如此。

我错过了什么?

【问题讨论】:

  • 你可以使用inner join来达到这个目的...

标签: mysql select join


【解决方案1】:

这里是inner join,因为你正试图加入这个表......

SELECT p.*, f.PersonName AS 'FatherName' FROM People p   //here is the p you forgot
    INNER JOIN People f ON
    p.PersonID = f.FatherID

【讨论】:

    【解决方案2】:

    您的加入条件不正确。更改如下。

    SELECT p.*, f.PersonName AS FatherName FROM People p
    LEFT OUTER JOIN People f ON
    p.FatherID= f.PersonID
    

    【讨论】:

    • 非常感谢!这正是我需要的语法修正。
    猜你喜欢
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 2014-12-10
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多