【问题标题】:MySql SELECT. Replace multiple columns in one shotMySql 选择。一次替换多个列
【发布时间】: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 获得相同的结果?

【问题讨论】:

    标签: mysql select


    【解决方案1】:

    您需要将tickets加入2份users

    select t.id, o.email opened_by, c.email closed_by
    from tickets t
    inner join users o on o.id = t.opened_by
    inner join users c on c.id = t.closed_by
    

    我使用了INNER 连接,但如果opened_byclosed_by 列可以为空,您应该使用LEFT 连接

    【讨论】:

      猜你喜欢
      • 2016-02-16
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2017-11-13
      • 1970-01-01
      相关资源
      最近更新 更多