我想弄清楚如何在單個查詢中完成以下任務。 基本上,給定一個用戶的ID,我想返回他是他的朋友的所有用戶的用戶配置文件。 如果有什麼不清楚的地方,我會很樂意詳細介紹。謝謝!確定PostgreSQL中使用子查詢的行之間的關係
表 '用戶':
user_id | col1 | col2 | etc ----------------------------------------- a | *** | *** | *** ----------------------------------------- b | *** | *** | ***
表 'users_friends'
user_id | friend_user_id | status ----------------------------------------- a | b | 1 ----------------------------------------- b | a | 1
給出的一個的值,在表中找到行users_friends其中
user_id = a
status = 1
使用所產生的該查詢的行,發現排在表users_friends其中
user_id = b (column `user_friend_id` from resulting rows)
user_friend_id = a (column `user_id` from resulting rows)
status = 1
如果在返回任何行,從表「用戶」那裏
user_id = b (column `user_id` from resulting row)
選擇行
這是一個非常粗糙的我想出來的。我認爲它符合我的要求,但我相信有更好的方法可以解決這個問題。
SELECT * FROM users WHERE user_id IN
(SELECT user_id FROM users_friends WHERE friend_user_id IN
(SELECT user_id FROM users_friends WHERE user_id = 'someuserid' AND status = 1) AND status = 1);