[英]How to GROUP BY same value in different rows with condition? (MYSQL)
我有這張桌子:
+-----------+-----------+---------------------+
| id | member_id | date |
+-----------+-----------+---------------------+
| 1 | 2 | 2020-07-27 21:53:46 |
| 2 | 1 | 2020-07-27 22:03:58 |
| 3 | 1 | 2020-07-27 22:09:16 |
| 4 | 1 | 2020-07-27 22:11:33 |
| 5 | 2 | 2020-07-27 22:12:21 |
-----------------------------------------------
我想GROUP BY
是這樣的:
+-----------+-----------+---------------------+
| id | member_id | date |
+-----------+-----------+---------------------+
| 1 | 2 | 2020-07-27 21:53:46 |
| 2 | 1 | 2020-07-27 22:03:58 |
| 5 | 2 | 2020-07-27 22:12:21 |
-----------------------------------------------
但是當我放GROUP BY member_id
時,它只返回兩行 (1, 2)
我將其理解為一個差距和孤島問題,您希望在其中顯示其member_id
與“上一個”行不同的行。
這是一種使用 window 函數(在 MySQL 8.0 中可用)的方法: lag()
給出前一行的member_id
,然后我們可以將其與當前行的值進行比較:
select id, member_id, date
from (
select t.*, lag(member_id) over(order by date) lag_member_id
from mytable t
) t
where not lag_member_id <=> member_id
order by date
id | member_id | date -: | --------: | :------------------ 1 | 2 | 2020-07-27 21:53:46 2 | 1 | 2020-07-27 22:03:58 5 | 2 | 2020-07-27 22:12:21
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.