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

克里斯

我似乎很难掌握在一个ID上连接3个表的概念。

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

开机自检表
|id |userid | content| |:----:|:----:|:----:| |1 |1 |HELLO | |2 |1 |THERE | |3 |2 |WORLD |

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

我想从USER表中提供ID,并从POST中获取所有内容,其中POST.USERID是FRIEND.USERID和FRIEND.FRIENDID,所以USER.ID ='1'将带回所有POST.CONTENT(这个案例)。

真希望您能有所帮助,让我烦了几个小时。

菲利普

按照您的描述,您无需加入用户表,可以直接使用friends表,因为那里有userid。但这应该给您所有来自userid 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章