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