MySQL:使用相同的表创建新表两次

时间:2016-06-06 03:54:58

标签: mysql data-structures

我想使用1个表来使用2组查询创建新表。

测试代码:http://sqlfiddle.com/#!9/02e3ff/5

参考表:

enter image description here

所需表:

enter image description here

他们共享相同的order_id。
type = A,updated_at = pDate
type = B,updated_at = dDate

查询1:

select t.order_id, t.updated_at as pDate, weekday(t.updated_at) from transactions t 
where t.type = 'A' group by t.order_id

查询2:

select t.order_id, max(t.updated_at) as dDate, weekday(max(t.updated_at)) from transactions t 
where t.type= 'B'
group by t.order_id;

对于type = A,我想获得最早的 updated_at 日期,而对于type = B,我想获得最新的 updated_at 日期。

目前,我尝试过联盟,但是他们给了我2行而不是所需的表。

如何加入或合并这两个查询以获取所需的表?

或者,有没有更好的方法来做到这一点?谢谢!

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

SELECT order_id, min(pDate) pDate, max(dDate) dDate FROM(
    SELECT
      order_id,
      if(type='A',updated_at,null) pDate,
      if(type='B',updated_at,null) dDate
    FROM transactions
) as d
GROUP BY order_id

SQLFiddle