1

我在 mysql 数据库中有两个表,它们如下所示:

USERS : id, username
POSTS : id, post, poster_id, posted_id

现在我想用poster_id的用户名(写帖子的人)和posted_id的用户名(写帖子的墙的所有者)获取最后10个帖子

我使用这个查询:

SELECT posts.*,users.username as poster_username FROM posts
INNER JOIN users on posts.poster_id = users.id 
ORDER BY timestamp DESC 
LIMIT 0,10

但正如你所看到的,我只得到一个poster_id 的用户名有没有办法在同一个内部连接语句中获取posted_id 的用户名?

4

1 回答 1

5

您应该加入用户两次:

SELECT posts.*,
       u1.username as poster_username,
       u2.username as posted_username
FROM posts
INNER JOIN users u1 on posts.poster_id = u1.id 
INNER JOIN users u2 on posts.posted_id = u2.id 
ORDER BY timestamp DESC 
LIMIT 0,10

唯一的要求是为每个表分配一个别名

于 2013-10-30T08:29:42.610 回答