2010-11-18 5 views
0

과거 MySQL 선택 날짜 : MAX 및 GROUP BY 문제

그래서, 지금하려고하는 쿼리는 다음과 같습니다.

SELECT `jid`, MAX(`start`) as `start` FROM `dates` WHERE `start` < NOW() GROUP BY `jid` 

테이블 dates은 기본적으로 작업과 관련된 DATETIME 값 start을 보유합니다.
아마 짐작 하겠지만, jid는 다른 테이블에 저장된 작업의 ID입니다.
직업은 여러 dates

를 가질 수 있습니다. 제가 이루고자하는 것은 과거에 start 날짜가 모두있는 직업을 찾아내는 것입니다.

내 생각은 start로 그룹화 된 start 날짜의 가장 높은 값을 선택하는 것이었고 과거에 있었던 경우 동일한 작업과 관련된 다른 모든 날짜도 과거임을 의미합니다.

이 쿼리는 과거에 start 날짜를 확인한 다음 가장 높은 날짜를 선택하기 때문에 작동하지 않습니다. 이것은 미래에있을 동일한 일에 대한 다른 날짜의 가능성을 배제하지 않습니다.

어떻게 진행할 수 있는지 잘 모르겠습니다. 어떤 도움이나 단서가 인정됩니다.

건배 - Tom

답변

2

당신은 HAVING을 사용할 수 있습니다

SELECT jid, MAX(start) as start 
FROM dates 
GROUP BY jid 
HAVING MAX(start) < NOW(); 

HAVING 같은 약간의 역할을합니다.이 선택된 후 행 이 필터링됩니다. 일반적으로 (실제로는 다른 어떤 경우도 생각할 수 없다), HAVING 만 집계 함수로 사용한다.

(그래도 난, 당신의 테이블에 당신에게 미래에 실제로 삽입 날짜를 바랍니다!)

+0

덕분에, 한 번 더 질문을, 당신이 내 테이블에 미래의 날짜가 희망을 말할 왜? – TomWilde

+0

그렇지 않으면 아무 것도 반환하지 않습니다 (과거에 날짜가있는 경우) –