我有3个表:user
,'user_friends'和'blog_post'
架构类似于以下内容:
user
id | username
-------------------
1 | jim
-------------------
2 | mary
-------------------
3 | george
-------------------
4 | julie
user_friends
user_id | friend_id
----------------------
1 | 2
----------------------
2 | 3
----------------------
2 | 4
blog_posts
id | title | user_id
------------------------------
1 | test_1 | 1
------------------------------
2 | test_2 | 2
------------------------------
3 | test_3 | 3
------------------------------
4 | test_4 | 4
好的,所以你可以看到每个用户都发了博文。用户有'朋友'。我正在寻找的是显示每个用户朋友的博客帖子。
所以,如果我想看看Jims的朋友帖子,那么应该显示mary的test_2帖子。如果我想看看mary的朋友帖子,它应该显示george和julie的test_3和test_4的帖子
有一种简单的方法吗?我可以使用子选择吗?
非常感谢
答案 0 :(得分:2)
是的,您可以使用子选择。 这样的事情应该有效:
SELECT * FROM blog_posts WHERE user_id in
(SELECT friend_id FROM user_friend WHERE user_id=1)
答案 1 :(得分:2)
可以这么简单(带有JOIN的变体):
SELECT bp.*
FROM user_friends uf
JOIN blob_posts bp ON bp.user_id = uf.friend_id
WHERE uf.user_id = my_id
答案 2 :(得分:0)
Select *
From blog_posts
Where user_id in
(Select friend_id
From user_friends
where user_id = 1);
最后的数字可以是您要查找的任何用户ID。
答案 3 :(得分:0)
您可以使用IN
SELECT * FROM blog_posts WHERE user_id IN (
SELECT friend_id FROM user_friends WHERE user_id = X)
答案 4 :(得分:0)
SELECT bp.*
FROM blog_posts bp
INNER JOIN user_friends uf ON bp.user_id = uf.friend_id
INNER JOIN user u ON u.id = uf.user_id
WHERE u.username = "jim"
答案 5 :(得分:0)
尝试此请求:
SELECT bp.title
FROM blog_posts bp
JOIN user_friends uf ON (bp.user_id = uf.friend_id)
WHERE uf.user_id = 1;