假設你有2個表:user
和friends
- 你想加入所有的朋友給你查詢用戶。在SQL雙向關係有2個表,並沒有重複
明顯的答案是:
SELECT friend.uid
FROM `user`
JOIN friends ON user.uid = friends.user
JOIN user AS friend ON friends.friend = friend.uid
WHERE user.uid = $user_id
這工作得很好,但它是一個單向的關係。爲了使這項工作,我不得不爲每個關係添加2行。
在另一方面,這是雙向的:
SELECT friend.uid
FROM `user`
JOIN friends ON user.uid IN(friends.col1, friends.col2)
JOIN user AS friend ON
friend.uid IN(friends.col1, friends.col2)
WHERE user.uid = $user_id AND friend.uid != user.uid
但是,這是利用多個IN()
的s是不是很乾淨,很可能帶有一個很大的性能損失。
還有沒有其他的方法可以做到這一點?
可以請你展示表模式和樣本數據的輸入和輸出嗎? – OldProgrammer