MySQL JOIN 3表通过WHERE从1开始搜索ID

时间:2016-07-30 15:51:28

标签: mysql

我似乎在努力把握在一个ID上加入3个表的概念。

用户表
|id | |:----:| |1 | |2 |

POST表
|id |userid | content| |:----:|:----:|:----:| |1 |1 |HELLO | |2 |1 |THERE | |3 |2 |WORLD |

朋友表
|id | userid | friendid | |:----:|:------:|:--------:| | 1 | 1 | 2 |

我想提供USER表中的ID,并从POSTS获取所有内容,其中POST.USERID是FRIEND.USERID和FRIEND.FRIENDID 所以USER.ID =' 1'将带回所有POST.CONTENT(在这种情况下)。

真的希望你能帮忙,几个小时一直在烦我。

1 个答案:

答案 0 :(得分:0)

根据您的描述,您不需要加入用户表,您可以直接使用friends表,因为您拥有userid。但这应该会给你所有来自用户ID 5及其那些朋友的帖子。

SELECT post.* 
FROM post 
INNER JOIN friends ON post.userid = friends.userid OR post.userid = friends.friendid 
WHERE friends.userid =1

要查询重复项,请使用以下命令:

SELECT post.*, users.firstname
FROM post 
INNER JOIN users ON users.userid = post.userid
WHERE post.userid = 1

UNION

SELECT post.*, users.firstname 
FROM friends
INNER JOIN post ON friends.friendid = post.userid 
INNER JOIN users ON users.userid = friends.friendid
WHERE friends.userid = 1