gpt4 book ai didi

mysql - 如何获取在 MYSQL 8 中列值更改之前首次出现的选择行

转载 作者:行者123 更新时间:2023-12-02 02:39:38 25 4
gpt4 key购买 nike

我有一个带有 Event_TimeStampFinalStateand 的 MYSQL8 表,它看起来像这样

+---------------------------+---------------+
|"Event_TimeStamp" |"FinalState" |
+---------------------------+---------------+
|"2020-03-09 04:57:45.729" |"Available" |
|"2020-03-09 05:14:59.659" |"Available" |
|"2020-03-09 05:27:56.341" |"Available" |
|"2020-03-09 05:41:01.554" |"Available" |
|"2020-03-09 05:58:07.803" |"Available" |
|"2020-03-09 06:06:09.745" |"Available" |
|"2020-03-09 06:18:07.663" |"Available" |
|"2020-03-09 06:26:24.273" |"Available" |
|"2020-03-09 09:29:53.165" |"Offline" |
|"2020-03-09 10:28:00.514" |"Available" |
|"2020-03-09 12:47:54.130" |"Available" |
|"2020-03-09 13:01:30.117" |"Available" |
|"2020-03-09 13:01:59.774" |"Offline" |
|"2020-03-09 13:19:15.772" |"Available" |
|"2020-03-09 14:19:51.521" |"Available" |
|"2020-03-09 14:50:16.872" |"Offline" |
+---------------------------+---------------+

我必须从上面提取行,这样它就会有第一个“可用”和“离线”的行,所以输出看起来像这样

+---------------------------+---------------+
|"Event_TimeStamp" |"FinalState" |
+---------------------------+---------------+
|"2020-03-09 04:57:45.729" |"Available" |
|"2020-03-09 09:29:53.165" |"Offline" |
|"2020-03-09 10:28:00.514" |"Available" |
|"2020-03-09 13:01:59.774" |"Offline" |
|"2020-03-09 13:19:15.772" |"Available" |
|"2020-03-09 14:50:16.872" |"Offline" |
+---------------------------+---------------+

我用 GROUP BY 尝试了几种方法,但我只得到每个 FinalState 的第一个条目,而不是其余的条目。

有没有办法通过查询来完成这项工作,还是我应该用 PHP 写出来?

最佳答案

您可以使用 lag()lead() 来显示 final_state 与上一行或下一行不同的记录:

select
event_timestamp,
final_state
from (
select
t.*,
lag(final_state) over(order by event_timestamp) lag_final_state,
lead(final_state) over(order by event_timestamp) lead_final_state
from mytable t
) t
where final_state <> lag_final_state or final_state <> lead_final_state

关于mysql - 如何获取在 MYSQL 8 中列值更改之前首次出现的选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60625427/

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