2016-06-22 22 views
0

私がGROUP BY関数を正しく使用しているかどうかわかりませんが、達成しようとしているのは、テーブルから最新の入力を選択し、それらをグループusernameでグループ化することです私の質問、サンプルデータベース、そして私が達成したいと思う結果を添付しました。グループと注文By

SQL

SELECT * FROM `test_pms` 
WHERE `username` = 'Lewis' 
GROUP BY `username` 
ORDER BY `id` DESC 

データベース構造

enter image description here

電流出力

ルイス|ハイテク

所望の出力

ルイス|こんにちは:)

うまくいけば、私は任意の助けのために私はGROUP BYに従って誤っORDER BYを使用している場合は、私は思ったんだけどGROUP BYで抱えている問題、ありがとうを概説しています。

+0

なぜあなたはMAX(id)を使用していませんか? – Berkay

+1

'x。*をmytable x order by id desc limit 1'から選択します。それがあなたが望むものでないなら、あなたの質問の質を改善することを検討してください。 – Strawberry

答えて

2

あなたは「ルイスのようusernameを指定した場合、あなたはこのようにそれを行うことができます。

select * 
from `test_pms` 
where `username` = 'lewis' 
order by `id` desc 
limit 1 

そして、あなたは、各usernameグループによる最新のレコードを取得したい場合、あなたはこのようにそれを行うことができます。

SELECT `test_pms`.* 
FROM `test_pms` 
INNER JOIN (SELECT MAX(id) AS id, username FROM `test_pms` GROUP BY username) t 
ON t.id = `test_pms`.id AND t.username = `test_pms`.username 
GROUP BY `test_pms`.`username` 

DEMO HERE

+0

ありがとう、まさに私が何をしていたのか:)本当に感謝します。 –