SQL匹配来自不同列的ID及其各自的用户名

问题描述 投票:1回答:1

我有一个包含user_id和lastreply_by_user_id列的表,我正在寻找一种方法来匹配他们的列与用户表中id的用户名。

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命令可能不是正确的,只是指出我正确的方向,我会感恩。

mysql sql
1个回答
2
投票

你需要两个连接到同一个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
© www.soinside.com 2019 - 2024. All rights reserved.