首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于两个不同的字段左加入相同的表?

基于两个不同的字段左加入相同的表?
EN

Stack Overflow用户
提问于 2014-08-23 06:56:37
回答 1查看 869关注 0票数 2

我有两张桌子。

代码语言:javascript
复制
SELECT * FROM posts  
post_id | user_id | timestamp | feed_id | content

SELECT * FROM users  
user_id | username | display_name

我有下面的MySQL查询来获取帖子,然后加入发布它的相应的用户信息.然后根据贴出的时间戳对帖子进行排序。

代码语言:javascript
复制
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,它是一个针对该用户的帖子。

如果在posts.feed_id=users.user_id上可用,我如何添加另一个JOIN语句来获取用户信息?

类似的东西(但不是这个,这没有得到我想要的):

代码语言:javascript
复制
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

我确信我必须相应地将这些信息化名,但我似乎根本无法检索它

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-23 07:08:53

用不同的别名连接两次:

代码语言:javascript
复制
SELECT posts.*, source.*, target.*
FROM `posts` 
LEFT JOIN `users` as source ON posts.user_id=source.user_id
LEFT JOIN `users` as target on posts.feed_id=target.user_id
ORDER BY `timestamp` DESC LIMIT 0, 15

您可能希望显式地列出列,而不是source.*target.*,这样就可以为它们指定不同的名称。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25459293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档