【问题标题】:MySQL left join on the same table, double inverted resultMySQL在同一张表上左连接,双反转结果
【发布时间】:2019-09-13 14:49:48
【问题描述】:

我有这张桌子:

项目 |时间戳 |价值
x | 1 | 30
x | 2 | 40
x | 3 | 50
1 | 25
是3 | 15

我想得到他的结果:

时间戳 | xval |伊瓦尔
1 | 30 | 25
3 | 50 | 15
2 | 40 |空

但是通过这个查询,我得到了双重不需要的结果:

select x.timestamp, x.value as xval, y.value as yval from test x left join test y on x.timestamp=y.timestamp and x.item!=y.item

结果是:

时间戳 | xval |伊瓦尔
1 | 25 | 30
3 | 15 | 50
1 | 30 | 25
3 | 50 | 15
2 | 40 |空

我想要一个没有前两行的结果。

【问题讨论】:

    标签: mysql join left-join outer-join


    【解决方案1】:

    基本的数据透视查询应该在这里工作:

    SELECT
        timestamp,
        MAX(CASE WHEN item = 'x' THEN value ELSE NULL END) AS xval,
        MAX(CASE WHEN item = 'y' THEN value ELSE NULL END) AS yval
    FROM test
    GROUP BY
        timestamp
    ORDER BY
        timestamp;
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多