2

假设我有

student_data和字段是

╔════╦════════════╦════════════╗
║ ID ║ CREATED_BY ║ UPDATED_BY ║
╠════╬════════════╬════════════╣
║ 1 ║ 1 ║ 2 ║
╚════╩════════════╩════════════╝

creator_updater和字段是

╔════╦════════════════╗
║身份证║姓名║
╠════╬════════════════╣
║ 1 ║ 造物主 ║
║ 2 ║ 第二创造者 ║
╚════╩════════════════╝

所以我想知道确切的代码是什么所以它会显示

学生数据

╔════╦═══════════════╦════════════════════════
║ ID ║ CREATED_BY_ID ║ LATEST_UPDATED_BY_ID ║
╠════╬═══════════════╬══════════════════⣕╕
║ 1 ║ 造物主 ║ 第二造物主 ║
╚════╩═══════════════╩════════════════════════

我试过加入语法,但似乎不同

4

1 回答 1

4

您需要加入creator_updater表格两次,以便获得两列的名称。

SELECT  a.id,
        b.name created_by_id,
        c.name latest_updated_by_id
FROM    student_data a
        INNER JOIN creator_updater b
            ON a.created_by = b.id
        INNER JOIN creator_updater c
            ON a.updated_by = c.id

但是如果其中一列可以为空,则上面的代码将不起作用,如果是这种情况,请使用LEFT JOIN而不是INNER JOIN

SELECT  a.id,
        b.name created_by_id,
        c.name latest_updated_by_id
FROM    student_data a
        LEFT JOIN creator_updater b
            ON a.created_by = b.id
        LEFT JOIN creator_updater c
            ON a.updated_by = c.id

有关联接的更多信息

于 2012-12-09T14:56:55.783 回答