2016-06-22 2 views
0

GROUP BY 기능을 올바르게 사용하고 있는지 확실하지 않습니다. 달성하고자하는 것은이 쿼리가 테이블의 최신 입력을 선택하고 그 그룹을 username에 따라 그룹화하는 것입니다. 내 쿼리, 예제 데이터베이스 및 내가 달성하고자하는 출력을 첨부했습니다.그룹 및 주문

SQL

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

데이터베이스 구조

enter image description here

전류 출력

루이스 | 안녕하세요

원하는 출력

루이스 | 안녕 :)

GROUP BY와 함께 가지고있는 문제를 잘 설명했습니다. GROUP BY에 따라 ORDER BY을 잘못 사용하고있는 경우, 도움을 청합니다. 당신이 '루이스'와 같은 username를 지정한 경우

+0

왜 MAX (ID)를 사용하지 않는? – Berkay

+1

'mytable x order from id desc limit 1'을 선택하십시오. 그것이 당신이 원하는 것이 아니라면, 질문의 질을 향상시키는 것을 고려하십시오 – Strawberry

답변

2

, 당신은 이런 식으로 작업을 수행 할 수 있습니다

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

고맙습니다, 정확히 내가 뭘했는지 :) 정말 고맙습니다. –

관련 문제