2012-12-09 94 views
2

让我们说我有MySQL的加入2个表,2列

student_data和字段

 

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

creator_updater和字段

 

╔════╦════════════════╗ 
║ ID ║  NAME  ║ 
╠════╬════════════════╣ 
║ 1 ║ The Creator ║ 
║ 2 ║ Second Creator ║ 
╚════╩════════════════╝ 

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

 
student_data 

╔════╦═══════════════╦══════════════════════╗ 
║ ID ║ CREATED_BY_ID ║ LATEST_UPDATED_BY_ID ║ 
╠════╬═══════════════╬══════════════════════╣ 
║ 1 ║ The Creator ║ Second Creator  ║ 
╚════╩═══════════════╩══════════════════════╝ 

我试过加入语法,但看起来不同

回答

3

您需要两次加入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 

有关更多信息加入

+0

是啊,这就是我说的。感谢兄弟,我会再问我是否有问题 –