본문 바로가기
MySql

MySQL 각 개별 후보 ID의 가장 최근 날짜가있는 행에서 데이터를 반환합니다.

by 베이스 공부 2020. 9. 24.
반응형

각 개별 후보 ID의 가장 최근 날짜가있는 행에서 데이터를 반환하려고합니다. 가장 최근 날짜 (created_unix 열)를 올바르게 반환하지만 해당 행의 나머지 데이터는 반환하지 않습니다.

SELECT candidate_id, message, max(created_unix), jobpost_id, staffuserid 
    FROM messages 
       WHERE employer_id='$employerid' AND last='company' 
          GROUP BY candidate_id

 

해결 방법

 

집계 함수를 사용하지 않는 모든 항목을 그룹화 해야합니다.

SELECT candidate_id, message, max(created_unix), jobpost_id, staffuserid 
    FROM messages 
       WHERE employer_id='$employerid' AND last='company' 
          GROUP BY candidate_id, message, jobpost_id, staffuserid 

메시지 가 행마다 다르고 후보 ID별로 그룹화 하려는 경우 메시지 를 사용하지 않아야합니다. 이 경우 선택 목록에서 제거하면 group by 목록에 필요하지 않습니다. 사용하지 않는 다른 필드도 마찬가지입니다.

집계 함수를 사용할 때는 집계 함수 또는 group by 에 각 필드를 포함해야합니다. 그렇지 않으면 SQL은 반환 된 행의 데이터를 가져올 행을 알 수 없습니다.

업데이트 :

당신이 찾고있는 것을 본 후에, 이것은 트릭을 할 것입니다 :

SELECT candidate_id, message, max(created_unix), jobpost_id, staffuserid 
    FROM messages 
       WHERE employer_id='$employerid' AND last='company' AND
       created_unix = (
           SELECT max(subm.created_unix)
           FROM messages subm
           WHERE subm.candidate_id = messages.candidate_id
       )

 

참조 페이지 https://stackoverflow.com/questions/8611646

 

 

반응형

댓글