SQL:从表中多次选择同一列

时间:2014-06-02 12:01:35

标签: sql

我有一个名为t_employee的表格,列ID, NAME

另一个名为t_ticket的表格,列ID, DESCRIPTION, CREATED_BY, UPDATED_BY

请注意,CREATED_BYUPDATED_BY是员工ID

我如何选择以下结果:

ID, DESCRIPTION, CREATED_BY, CREATED_BY_NAME, UPDATED_BY, UPDATED_BY_NAME

其中CREATED_BY_NAMEUPDATED_BY_NAME来自employee表。

我使用临时表并进行更新,但这看起来很昂贵。

这些表也是固定的,所以我无法改变它们。

期待任何建议。

2 个答案:

答案 0 :(得分:4)

只需多次加入同一个表,为其添加一个别名(每个连接都有一个别名):

select
  t_ticket.ID, 
  t_ticket.DESCRIPTION, 
  t_ticket.CREATED_BY, 
  e1.name as CREATED_BY_NAME, 
  t_ticket.UPDATED_BY, 
  e2.name as UPDATED_BY_NAME
from
  t_ticket 
left join
  t_employee as e1 on e1.id = t_ticket.CREATED_BY
left join
  t_employee as e2 on e2.id = t_ticket.UPDATED_BY

答案 1 :(得分:0)

您需要连接两次并使用别名,如下所示:

SELECT
    t.ID, t.DESCRIPTION, t.CREATED_BY, TableCreated.Name as CREATED_BY_NAME, t.UPDATED_BY, TableUpdated.Name as UPDATED_BY_NAME
FROM 
    t_ticket t INNER JOIN  t_employee TableCreated
    ON t.CreatedBy = TableCreated.Id
    INNER JOIN t_employee TableUpdated
    on t.CreatedBy = TableUpdated.Id;

(根据您的情况使用内部或左侧连接)