如何在MySQL中使用两个条件进行内连接

Bas*_*sel 1 mysql sql inner-join

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

USERS : id, username
POSTS : id, post, poster_id, posted_id
Run Code Online (Sandbox Code Playgroud)

现在我想获取最后10个帖子,其中包含poster_id的用户名(撰写帖子的人)和posted_id的用户名(帖子已写入的墙的所有者)

我用这个查询:

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
Run Code Online (Sandbox Code Playgroud)

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

dan*_*era 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
Run Code Online (Sandbox Code Playgroud)

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