2011-04-08 2 views
0

어떤 조언 좋을 것 :MySQL의 최소 쿼리

내가 계정과 동일한 상태로 수와 두 개의 서로 다른 타임 스탬프

전 가지고 MIN() 쿼리를 실행하고 있습니다 :

SELECT 
    DATE(`created_at`) as date, 
    account_id, 
    changed_by_id, 
    status 
FROM statuses 
WHERE `changed_to` = 'entered' 
AND account_id = 49794; 

결과를 :

date   account_id changed_by_id status 
2011-04-05 49794  17    entered 
2011-03-16 49794  18    entered 

min(DATE(created_at))GROUP By account_id 나는에 대한 올바른 changed_by_id을받지 못했습니다 그 account_iddate

사람이 내가 changed_by_id와 일치하는 date을 얻을 수있는 쿼리와 함께 무엇을해야하는지 조언을 할 수 있습니까?

감사

+0

일반적인 그룹 별 최대 쿼리입니다. – Devart

답변

0

테스트하지하지만 날짜를 기준으로이

select 
t1.DATE(`created_at`) as date, 
t1.account_id, 
t1.changed_by_id, 
t1.status 
from statuses t1 
where (date(created_at) = (select min(date(created_at)) 
       from statuses t2 
       where t1.account_id=t2.account_id)) 
and t1.account_id = 49794; 
0

주문과 비슷한, 그리고 첫 번째 행을 선택합니다

 
SELECT 
    DATE(`created_at`) as date, 
    account_id, 
    changed_by_id, 
    status 
FROM statuses 
WHERE `changed_to` = 'entered' 
AND account_id = 49794 
ORDER BY 1 
LIMIT 1; 

이 가장 우아하지 않을 수 있습니다를 옵션을 제공하지만 이해하기 쉽고 효율적입니다.