簡體   English   中英

MySQL選擇每個組中的最新輸入

[英]Mysql select latest input within each group

所以我有這張桌子叫

maid_processing
id     code    confirm_arrival    category_id    arrived 
5       A1     2014-01-02          NULL            1
4       B2     2014-01-02          NULL            1
3       A1     2014-01-01          NULL            1
2       B2     2014-01-01          NULL            1
1       B2     2014-01-01          NULL            0

如您所見,代碼是重復的,但其他列可能有所不同。 我想要實現的是我想要

選擇所有字段,其中confirm_arrival字段滿足給定的日期范圍,並且到達= 1,並且由於示例滿足條件,由於A1和B2將重復兩次,因此我們可以將具有相同代碼的代碼組合在一起,從而形成2個組,A1和B2

因此,我最終想要的是在這兩個組中,我只希望每個組中ID號= biggest(因此為最新)的那一行輸入。

    The desired result will be 
id   code    confirm_arrival
5    A1      2014-01-02 
4    B2      2014-01-02

到目前為止,我所獲得的信息只會返回最早的(每個組中的id = smallest),請參見下面的代碼

SELECT * 
  FROM 
     ( SELECT * 
         FROM maid_processing mp
         LEFT
         JOIN 
            ( SELECT id catid
                   , archived 
                FROM category
            ) AS cat 
           ON cat.catid = maid_mp.category_id 
        WHERE arrived = 1 
          AND (archived IS NULL OR archived = 0) 
          AND confirm_arrival BETWEEN :from_date AND :to_date     
        ORDER 
           BY confirm_arrival DESC
     ) AS inv 
 GROUP 
    BY code;
SELECT * 
  FROM 
     ( SELECT * 
         FROM maid_processing mp
         LEFT
         JOIN 
        ( SELECT id catid
               , archived 
            FROM category
        ) AS cat 
       ON cat.catid = mp.category_id 
    WHERE arrived = 1 
      AND (archived IS NULL OR archived = 0) 
      AND confirm_arrival BETWEEN :from_date AND :to_date     
    ORDER 
       BY id DESC
 ) AS inv 
 GROUP 
BY code;

我只是在最后4行中用id替換了notify_arrival。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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