【发布时间】:2020-11-18 14:03:38
【问题描述】:
我想创建一个 SELECT,它将一个表中的 多列 的内容替换为另一个表的单列中的内容。
有两张表 TICKETS 和 USERS。
**TICKETS table**
ID opened_by closed_by
1 110 22
2 110 32
3 240 32
**USERS table**
ID email
22 foo@mail.com
32 bar@mail.com
110 bob@mail.com
240 tom@mail.com
**THE UGLY SELECT RESULT**
ID opened_by closed_by
1 bob@mail.com foo@mail.com
2 bob@mail.com bar@mail.com
3 tom@mail.com bar@mail.com
目前,我正在使用 LEFT JOIN 进行 SELECT 与 LEFT JOIN 的另一个 SELECT 以获得结果。第一个 SELECT 替换 opens_by 列,第二个 SELECT 替换 closed_by 列的内容,如下所示:
SELECT x.ID, users.email AS opened_by, x.closed_by
FROM (SELECT tickets.ID, tickets.opened_by, users.email AS closed_by
FROM tickets
LEFT JOIN users
ON tickets.closed_by=users.ID) as x
LEFT JOIN users
ON x.opened_by=users.ID;
是否可以使用单个 SELECT 获得相同的结果?
【问题讨论】: