[英]Retrieve a certain number of records with the same field mysql
我在 MySql 5.X 中有一個表,其中標識符根據日期重復重復。 我需要恢復每個標識符的前 2 條記錄。
例子:
name year month
xxxx 2019 8
xxxx 2019 7
xxxx 2019 6
xxxx 2019 5
.... .... ..
zzzz 2019 5
zzzz 2019 4
zzzz 2019 3
zzzz 2019 2
.... .... ..
預期結果:
name year month
xxxx 2019 8
xxxx 2019 7
zzzz 2019 5
zzzz 2019 4
other ...
我需要檢索每個名稱的前兩條記錄,使用日期子句這樣做是無效的。
謝謝。
在 MySQL 8.x 中,您可以使用ROW_NUMBER()
window function 為行分配編號。 然后過濾你需要的很容易。 例如:
select *
from (
select
name, year, month,
row_number() over(partition by name order by year desc, month desc) as rn
from t
) x
where rn <= 2
order by name, year desc, month desc
第一部分將從表中獲取每年和每月的第一條記錄。 第二部分將獲取每年和每月的第二條記錄。
SELECT a.name,
a.year,
a.month
FROM test a
GROUP BY a.name,
a.year
UNION
SELECT a.name,
a.year,
(SELECT month
FROM test b
WHERE b.name = a.name
AND b.year = a.year
LIMIT 1, 1) AS Month
FROM test a
GROUP BY a.name,
a.year ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.