簡體   English   中英

檢索一定數量的具有相同字段的記錄 mysql

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM