【发布时间】:2014-08-23 06:56:37
【问题描述】:
我有两张桌子...
SELECT * FROM posts
post_id | user_id | timestamp | feed_id | content
SELECT * FROM users
user_id | username | display_name
我有以下 MySQL 查询来获取帖子并 LEFT JOIN 发布它的相应用户信息...然后按发布的时间戳对帖子进行排序。
SELECT posts.*, users.* FROM `posts` LEFT JOIN `users` ON posts.user_id=users.user_id ORDER BY `timestamp` DESC LIMIT 0, 15
现在,posts.feed_id 要么为 NULL,即“普通帖子”,但也可以是另一个 user_id,即针对该用户的帖子。
我如何添加另一个 JOIN 语句来获取该用户信息(如果可用) --- 在 posts.feed_id=users.user_id
类似的东西(但不是这个,这没有得到我想要的):
SELECT posts.*, users.* FROM `posts` LEFT JOIN `users` ON posts.user_id=users.user_id AND posts.feed_id=users.user_id ORDER BY `timestamp` DESC LIMIT 0, 15
我确定我必须相应地为信息设置别名,但我似乎根本无法检索它
【问题讨论】:
-
您必须加入
users表两次。一次用于user_id,一次用于feed_id。在这种情况下它会起作用:) -
好问题。有时我们会被困在一个关系迷宫中,门正对着我们。赞成:)