SQL 查询示例中点运算符的作用或含义是什么?

SQL 查询示例中点运算符的作用或含义是什么?

在这个查询中,我不明白:

什么是p1.Personp2.Person

这是图片

SELECT p1.Person AS PERSON, p2.Person AS FRIEND_OF_FRIEND
FROM PersonFriend pfl JOIN Person p1 ON pfl.PersonID = p1.ID
    JOIN PersonFriend pf2 ON pf2.PersonID = pf1.FriendID
    JOIN Person p2 ON pf2.FriendID = p2.ID
WHERE p1.Person = "Alice" AND pf2.FriendID <> p1.ID

答案1

正如 mcalex 指出的那样,它们是表引用,在这种情况下,它们引用了同一张表两次,因为它与自身相连。该Person位包含人员的姓名(根据图形)。

查询如下:

SELECT  p1.Person AS PERSON, p2.Person AS FRIEND_OF_FRIEND
FROM    PersonFriend pf1 
    JOIN Person p1 ON pf1.PersonID = p1.ID
    JOIN PersonFriend pf2 ON pf2.PersonID = pf1.FriendID
    JOIN Person p2 ON pf2.FriendID = p2.ID
WHERE   p1.Person = "Alice" and pf2.FriendID <> p1.ID

仔细查看条款中对表格的每次提及FROM。您将能够看到,每次提及表格时,都有一个简写(例如JOIN Personp1)。最终会得到以下简写/引用名称:p1p2和。其中和引用表pf1,并引用。pf2p1p2Personpf1pf2PersonFriend

在正常情况下,您可以使用表的整个名称,如Person或,PersonFriendJOINS由于此查询中有多个自连接,因此您需要另一种方法来识别您所指的是表的哪个特定实例的哪些字段。

编辑:mcalex 给出的参考(在一个查询中使用同一个表两次) 包含更多有关自连接含义的信息。

相关内容