2015-08-31 29 views
-3

我有這樣的MySQL表:如何爲每個用戶名獲取MAX(id)?

enter image description here

如何獲得最大的ID爲每個用戶名?

像上面的圖片,我只想獲得用戶名'mostafa'或''samsung',但與最大id的行。

我測試了很多的查詢,如:

SELECT MAX(id) , latitude, longitude FROM 'users_geo' WHERE username = 'mostafa' 

這只是返回與用戶名穆斯塔法最大ID記錄。

而且測試此查詢:

SELECT id, latitude, longitude FROM `users_geo` WHERE username = 'samsung' HAVING MAX(id) LIMIT 0 , 30 

該查詢只返回錯誤的結果。查詢返回行id=9,而用戶'samsung'的最大ID爲21

+1

而不是表的圖像,請設置一個sqlfiddle,所以我們可以重現該問題。 –

+0

請參閱http://dev.mysql.com/doc/en/example-maximum-column-group-row.html – Strawberry

+0

@Lelio Faieta:謝謝..提及,我不熟悉[SQlFiddle](http:///sqlfiddle.com/)。但這是pastebin(http://pastebin.com/Pz6CP3mE) – Mostafa

回答

0

使用mysqlgroup byAggregate (GROUP BY) Functionsmax你的情況。

select username, max(id) from users_geo group by username; 
+0

謝謝。我使用這個 - >'SELECT * FROM(SELECT * FROM'users_geo' ORDER BY'id' DESC)tmp GROUP BY tmp.'username'; ',但返回錯誤:'#1248 - 每個派生表都必須有自己的別名' – Mostafa

+0

'group by'應該與[Aggregate(GROUP BY)Functions]一起使用(https://dev.mysql.com/doc/) refman/5.0/EN /組逐functions.html)。試試這個'SELECT tmp.usename,max(tmp.id)FROM(SELECT * FROM users_geo ORDER BY id DESC)tmp GROUP BY tmp.username;''或者簡單地''從users_geo組中通過用戶名選擇用戶名,最大(id) – luoluo

+0

謝謝...使用此[鏈接](https://gist.github.com/anonymous/47e5f024a08b3f6c6302)並工作。 – Mostafa