gpt4 book ai didi

mysql查询合并一张表上的2个选择

转载 作者:行者123 更新时间:2023-11-29 09:50:51 24 4
gpt4 key购买 nike

如何像这样在一张表上组合 2 个选择?

表 T1:

id | status | ts
1 | 0 |2019-02-22 00:00:00
2 | 0 |2019-02-22 00:00:00
3 | 0 |2019-02-22 00:00:00
1 | 1 |2019-02-22 01:00:00
3 | 1 |2019-02-22 01:30:00
1 | 0 |2019-02-22 02:00:00
3 | 0 |2019-02-22 03:00:00

我想查找每个 ID 的 status = 0status = 1 的最后值

1  | 0      |2019-02-22 02:00:00 with 1       | 1      |2019-02-22 01:00:00
2 | 0 |2019-02-22 00:00:00
3 | 0 |2019-02-22 03:00:00 with 3 | 1 |2019-02-22 01:30:00

我尝试过:

SELECT id, status, MAX(ts) 
from T1
where status = 1 Union SELECT id, status, MAX(ts) from T1 where status = 0

但不行...:o(

也许可以计算每个 ID 的 2 个状态变化之间的时间差...

最佳答案

条件聚合应该有技巧:

SELECT 
id,
MAX(CASE WHEN status = 0 THEN ts END) ts_0,
MAX(CASE WHEN status = 1 THEN ts END) ts_1
FROM T1
GROUP BY id

<强> Demo on DB Fiddle :

| id  | ts_0                | ts_1                |
| --- | ------------------- | ------------------- |
| 1 | 2019-02-22 02:00:00 | 2019-02-22 01:00:00 |
| 2 | 2019-02-22 00:00:00 | |
| 3 | 2019-02-22 03:00:00 | 2019-02-22 01:30:00 |

关于mysql查询合并一张表上的2个选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54835424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com