2016-08-03 13 views
0

안녕하세요, 저는 smth별로 gruoup보다 날짜순으로 테이블 순서를 선택하고 싶습니다. 처음 phpmyadmin에서 오류 (sql_mode = only_full_group_by)를 주면 my.cnf에서 해당 플래그를 제거하여 문제를 해결할 수 있습니다.이 수정본이 장기적으로 좋은지 여부를 모릅니다. 어딘가에서이 수정 사항을 읽으면 원하지 않는 결과가 발생할 수 있습니다. . 나는 **select * from (select * from log order by date desc) tmp group by imei**을 시도했지만 그 결과는 가장 새로운 날짜가 아닌 가장 오래된 날짜에서 나온 것이므로 마지막 아이디가 아닌 처음 아이디의 imei를 제공합니다.Mysql 날짜순으로 선택 desc 내림차순 그룹화

+0

'select * from (select * from log order by date desc) tmp group by imei'와'select * from (로그 날짜순으로 선택) tmp group by imei'의 결과에는 차이가 없습니다. –

+0

나는'select * from (select * from log order to date desc limit 100) tmp group by imei' 시도했는데 작동하지만 결과를 제한하고 싶지 않다. –

답변

0

그룹화 결과에 대해 입력을 주문했는지 여부는 중요하지 않습니다. 질문을 올바르게 해석하면 각 imei에 대한 최신 로그 항목을 가져오고 싶습니다. 당신은 이런 식으로 뭔가를해야 할 것 :

SELECT l1.* 
    FROM logs as l1 
    LEFT OUTER JOIN logs as l2 
    ON l1.imei = l2.imei 
    AND l1.date < l2.date 
    WHERE l2.date IS NULL 

당신은 본질적으로 로그 항목 (L2)이 같은 IMEI에 존재하지 않는 각 로그 항목 (L1), 그러나 더 큰 일을 요청하는 곳.

당신이 각 IMEI의 마지막 로그 항목이 때 알고 싶은 경우

이 충분히있을 것입니다 :

SELECT imei, MAX(date) 
    FROM log 
    GROUP BY imei 
+0

나는 trie를 가졌다. 첫 번째 명령은 너무 오래 걸리고 결과가 나타나지 않습니다.로드하는 중입니다. 당신이 2 - nd 명령을 whith 정확히 와트하고 싶지만 imei 및 날짜뿐만 아니라 모든 열을 sellect 싶어요 –

+0

어디에 내가 l2.date null 삭제되었습니다하지만 그것은 내게 모든 테이블의 데이터를 고유 한 제공합니다. datas by imei –

+0

결과가 오래 걸리면 imei 및 date 열에 인덱스를 추가해야합니다. "WHERE l2.date IS NULL"부분을 삭제하면 모든 항목을 묻습니다. 그러면 그 내용이 표시됩니다. – seven77

0

SELECT * 로그에서 WHERE의 아이디 (IMEI에 의해 로그 그룹에서 최대 (ID)를 선택)

관련 문제