[SQL] 함께 ORDER BY와 GROUP BY를 사용하여
SQL함께 ORDER BY와 GROUP BY를 사용하여
이 같은 내 테이블 외모 (내가 MySQL을 사용하고 있습니다)
m_id | v_id | timestamp
------------------------
6 | 1 | 1333635317
34 | 1 | 1333635323
34 | 1 | 1333635336
6 | 1 | 1333635343
6 | 1 | 1333635349
내 목표는 각이 한 번 m_id, 가장 높은 타임 스탬프에 의해 순서 걸릴 것입니다.
결과는해야한다 :
m_id | v_id | timestamp
------------------------
6 | 1 | 1333635343
34 | 1 | 1333635336
그리고 난이 쿼리를 썼다 :
SELECT * FROM table GROUP BY m_id ORDER BY timestamp DESC
그러나, 결과는 다음과 같습니다
m_id | v_id | timestamp
------------------------
34 | 1 | 1333635323
6 | 1 | 1333635317
나는 처음 GROUP_BY가 수행 한 후 결과를 정렬 있기 때문에 발생합니다 생각합니다.
어떤 아이디어? 감사합니다.
해결법
-
==============================
1.제대로 그룹화를 사용하여이 작업을 수행하는 한 가지 방법 :
제대로 그룹화를 사용하여이 작업을 수행하는 한 가지 방법 :
select l.* from table l inner join ( select m_id, max(timestamp) as latest from table group by m_id ) r on l.timestamp = r.latest and l.m_id = r.m_id order by timestamp desc
어떻게 이런 작품 :
-
==============================
2.당신이 정말로 걱정하지 않는 경우 어느 대해 당신이 얻을 것이다 당신의 v_id 항상 다음을 수행 할 수있는이 m_i를 주어진에 대해 동일 타임 스탬프 :
당신이 정말로 걱정하지 않는 경우 어느 대해 당신이 얻을 것이다 당신의 v_id 항상 다음을 수행 할 수있는이 m_i를 주어진에 대해 동일 타임 스탬프 :
select m_id, v_id, max(timestamp) from table group by m_id, v_id order by timestamp desc
이제 주어진 m_id에 대한 v_id 변경 한 후 다음을 수행해야하는 경우
select t1.* from table t1 left join table t2 on t1.m_id = t2.m_id and t1.timestamp < t2.timestamp where t2.timestamp is null order by t1.timestamp desc
-
==============================
3.이 시도 할 수 있습니다
이 시도 할 수 있습니다
SELECT tbl.* FROM (SELECT * FROM table ORDER BY timestamp DESC) as tbl GROUP BY tbl.m_id
-
==============================
4.여기에 간단한 해결책이다
여기에 간단한 해결책이다
select m_id,v_id,max(timestamp) from table group by m_id;
m_id로 그룹 있지만 각 m_id에 대한 타임 스탬프의 최대 수.
-
==============================
5.SQL>
SQL>
SELECT interview.qtrcode QTR, interview.companyname "Company Name", interview.division Division FROM interview JOIN jobsdev.employer ON (interview.companyname = employer.companyname AND employer.zipcode like '100%') GROUP BY interview.qtrcode, interview.companyname, interview.division ORDER BY interview.qtrcode;
-
==============================
6.그냥 당신은 ASC와 DESC해야합니다. 다음과 같은 쿼리를 작성합니다. 이 오름차순으로 값을 반환합니다.
그냥 당신은 ASC와 DESC해야합니다. 다음과 같은 쿼리를 작성합니다. 이 오름차순으로 값을 반환합니다.
SELECT * FROM table GROUP BY m_id ORDER BY m_id asc;
-
==============================
7.왜 이렇게 복잡하게 만든다? 이 일했다.
왜 이렇게 복잡하게 만든다? 이 일했다.
SELECT m_id,v_id,MAX(TIMESTAMP) AS TIME FROM table_name GROUP BY m_id
from https://stackoverflow.com/questions/10030787/using-order-by-and-group-by-together by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 두 필드에 의해 그룹을 사용하고 SQL에서 계산 (0) | 2020.04.24 |
---|---|
[SQL] 선택 "WHERE"매개 변수를 사용하여 저장 프로 시저 (0) | 2020.04.24 |
[SQL] 에서 LIKE 연산자 대소 문자를 구분 MSSQL 서버와인가? (0) | 2020.04.24 |
[SQL] MySQL을 열거 형 데이터 유형으로 SQL 서버에 해당? (0) | 2020.04.24 |
[SQL] 어떻게 분류 번호가 포함 SQL 서버에 VARCHAR 컬럼을합니까? (0) | 2020.04.24 |