給定一個主鍵爲id
的用戶表,我有一個名爲friends
的外部表,它只有兩個字段(userid1, userid2
)。這使我們能夠在不同的用戶之間創建任何類型的關係(一對多,一對一等)。用戶可以出現在任一列中,並且兩列都相同。 IOW,每個關係單個條目。SQL查找基於兩列的記錄
我怎樣才能拉給定用戶id
有的所有朋友。說強尼,有3個朋友和他的用戶id
是16
...我的SQL查詢應該是這樣嗎?
SELECT *
FROM db.users
JOIN db.friends
ON db.users.id = db.friends.userid1
AND db.users.id = 16
希望這是明確的。另外,如果可能,我可以從結果集中排除Jonny嗎?
該查詢,由於上市吉斯我下面的:
id name uuid birthday userid1 userid2
16 jonny ABCDEFGHIJKLMNOP 1967-04-27 01:00:00 1 2
16 jonny ABCDEFGHIJKLMNOP 1967-04-27 01:00:00 1 3
這是相當接近,但我想他的朋友,而不是強尼
謝謝你們,讓我得到它的工作謝謝你。這是最後的工作查詢。
SELECT *
FROM db.users
WHERE db.users.id IN
(
SELECT db.friends.userid2 as id FROM db.friends WHERE db.friends.userid1 = 16
union
SELECT db.friends.userid1 as id FROM db.friends WHERE db.friends.userid2 = 16
)
這給了我:
id name uuid birthday
2 robin ABCDEFGHIJKLMNOP 1967-04-27 01:00:00
3 gary ABCDEFGHIJKLMNOP 1967-04-27 01:00:00
執行查詢你提出並告訴我們結果是否符合您的需求(如果不是,以哪種方式失敗)。 – Oswald
jonnies的朋友是擁有'id' 2和3的用戶。所以你已經有jonnies的朋友了。哪裏有問題? – Oswald
是的。朋友是我們想要的。我真的不需要兩個額外的列,但沒關係。 –