我的任务是找到一个'被联系者的二级联系数量。在一张桌子上'联系人'列'被联系者'和' contacter'。到目前为止,我已经能够找到二级联系人的名字,但不能消除那些是一级联系人。例如,如果Adam既是Mike的二级连接和第一级连接,那么查询不应该返回Adam,但我的查询确实如此。我是SQL的新手,所以任何帮助都很棒。
SELECT
contactsB.contacter
FROM
contacts AS contactsB
INNER JOIN contacts AS contactsA
ON contactsA.contacter = contactsB.contactee
AND contactsA.contactee <> contactsB.contactee
AND contactsA.contactee = <insert contactee here>
答案 0 :(得分:1)
使用此查询
SELECT b.contactee, c.contacter
FROM
contacts b
INNER JOIN contacts c ON b.contacter = c.contactee AND b.contactee != c.contacter
ORDER BY 1
要获得二级学位联系人的数量,只需按此方式添加COUNT(*)
和GROUP BY
SELECT b.contactee, COUNT(*)
FROM
contacts b
INNER JOIN contacts c ON b.contacter = c.contactee AND b.contactee != c.contacter
GROUP BY 1
答案 1 :(得分:1)
SELECT a.contacter, b.contactee
FROM
contacts a INNER JOIN contacts b
ON a.contacter = b.contactee
AND a.contactee != b.contacter
AND b.contacter NOT IN
(SELECT c.contacter
FROM
contacts c
WHERE a.contactee = c.contactee)
ORDER BY 1