2017-07-25 77 views
0

我有這樣的一個表:如何獲得小組最後一個項目BY

id transaction_id auto_recurring paid_amount package_customerid 
37    0    1   0     4 
45    37    1   0     4 
51    0    1   0     4 
57    51    1   0     4 
62    0    1   0     4 
67    62    1   0     4 

有6條package_customer_id的= 4。現在我想的4.最後一條記錄在這種情況下,ID = 67是我想要的記錄。我試試SELECT * FROM transactions GROUP BY package_customer_id。但是我得到了package_customer_id = 4的第一個記錄,即:id = 4是我提取的結果。我怎樣才能得到id = 67(我想要的記錄)修改此sql?

+0

請注意,使用「分組依據」時,您不一定會獲得記錄。您將收到符合選擇標準的字段集合。選擇字段(你的「*」所在的字段)需要在where子句中表示,或者使用像MAX一樣的聚合函數https://dev.mysql.com/doc/refman/5.7/en/group-by -functions.html如果你嘗試這樣做,較新版本的MySQL會給你一個錯誤。 – Jaydee

回答

0

請勿使用group by。使用where

SELECT t.* 
FROM transactions t 
WHERE t.id = (SELECT MAX(t2.id) 
       FROM transactions t2 
       WHERE t2.package_customer_id = t.package_customer_id 
      ); 

可以篩選此爲你喜歡的任何包客戶ID,在外部查詢。

+0

不處理package_CustomerID = 4 – xQbert

0

你可以試試這個。

SELECT temp.* FROM (SELECT * FROM `transactions` WHERE package_customer_id = 4 order by id DESC LIMIT 1) AS temp GROUP BY temp.package_customer_id 
+0

不處理package_CustomerID = 4 – xQbert

+0

@xQbert OH!我滑過這一點,反正我可以在子查詢中添加條件 –

-1

你可以使用這樣的:

SELECT * FROM transactions WHERE id IN (SELECT MAX(id) FROM transactions GROUP BY package_customerid) 
+0

不處理package_CustomerID = 4 – xQbert

2

SELECT * FROM transactions WHERE package_customer_id = 4 ORDER BY id DESC LIMIT 1;

這將是我的投籃吧。很抱歉,但我沒有測試它,我把它留給你:)

編輯:

不要忘記在列引號「'」的名:)

檢查你列名package_customer_id OR package_customerid

+1

只有當字段是「保留字」時才需要反引號 – xQbert

+0

只有當所有格 - 「列名」或把它排除在外,如「列名」 – Strawberry

+0

@Strawberry那麼宮縮怎麼辦?我通常不會使用它們,但是...:P注意:關鍵字不需要反引號 – xQbert

-1

嘗試此查詢

,如果你有需要GROUP BY子句:使用此查詢

SELECT * FROM transactions where GROUP BY package_customerid ORDER BY package_customerid DESC LIMIT 1; 

OR ,如果你不與GROUP需要BY子句:使用此查詢

SELECT MAX(id),transaction_id,auto_recurring,paid_amount,package_customerid FROM transactions where package_customerid=4; 

輸出:

id transaction_id auto_recurring paid_amount package_customerid 
67    62    1   0     4 
+0

在這個問題中,提到使用Group by子句 –

+0

我從來沒有理解使用聚合瓦特/字段值是不同的。那麼在這裏選擇什麼transaction_ID?爲什麼是62?而不是0 51或37? – xQbert

相關問題