sql将不同列的ID与其各自的用户名进行匹配

bakd9h0s  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(267)

我有一个包含列user\u id和lastreply\u by\u user\u id的表,我正在寻找一种方法,将它们的列与id为的user表中的用户名相匹配。

SELECT
   table_threads.*,
   table_users.username
FROM
  threads AS table_threads
  INNER JOIN users as table_users ON table_threads.user_id = table_users.id
  OR table_threads.lastreply_by_user_id = table_users.id
WHERE  
   table_threads.category_id = :category_id

这是我现在拥有的代码,但是现在它创建了重复的条目,而不是一个合并的条目。
最近刚开始使用sql,发现了join命令,也许它不是正确的,只要给我指出正确的方向,我会很感激的。

y1aodyip

y1aodyip1#

你需要两个连接到同一个 user 表:一个连接 user_id ,还有一个连接 lastreply_by_user_id . 使用表别名消除歧义:

SELECT
   t.*,
   u.username as user_name,
   r.username as last_reply_name
FROM
  threads AS t
  INNER JOIN users as u ON t.user_id = u.id              -- actual user
  INNER JOIN users as r ON t.lastreply_by_user_id = r.id -- reply user
WHERE  
   table_threads.category_id = :category_id

相关问题