【问题标题】:Join Two Columns With One Table MySQL用一张表连接两列 MySQL
【发布时间】:2026-02-13 05:15:01
【问题描述】:

我正在创建一个 php 待办事项列表,并在 MySQL 数据库中有一个“admin_todo”表,每个待办事项都有一个“created_by”和“completed_by”列,其中包含一个单独的表“admin_users”中的用户 ID .

我需要一个查询,允许我将 'created_by' 和 'completed_by' 列与 'admin_users' 表中的 'username' 列链接起来,这样我就可以回显创建待办事项的用户的用户名谁完成了待办事项。看起来这很容易,但我找不到正确执行此操作的查询。

我尝试过使用联合:

SELECT admin_todo.*, admin_users.username AS creator 
FROM admin_todo 
LEFT JOIN admin_users ON admin_todo.created_by = admin_users.id 

UNION ALL

SELECT admin_todo.*, admin_users.username AS completer 
FROM admin_todo 
LEFT JOIN admin_users ON admin_todo.completed_by = admin_users.id

但是,遗憾的是,它会两次返回所有 todo 条目,第一次是在“creator”列下使用 todo 创建者的用户名。第二次使用待办事项完成者的用户名,但也在“创建者”列下。

【问题讨论】:

    标签: php mysql select join left-join


    【解决方案1】:

    试试这个:

    SELECT admin_todo.*, au.username AS creator, au2.username AS completer
    FROM admin_todo 
    LEFT JOIN admin_users AS au
        ON admin_todo.created_by = au.id
    LEFT JOIN admin_users AS au2
        ON admin_todo.completed_by = au2.id
    

    【讨论】:

    • 工作得很好!我不知道你可以选择一个表作为'something_else',我以为那只是用于列。谢谢!
    • 是的,它让生活变得更轻松。