2013-08-26 4 views
1

보다 큰 I 다음과 같은 데이터가MySQL의 쿼리는 X

user_id days date 
88  2  2013-08-25 
88  4  2013-08-23 
88  18  2013-08-5 
88  1  2013-08-4 
88  2  2013-08-2 
73  11  2013-08-2 
299  4  2013-08-2 
12  983 2013-08-2 

나는 때까지, 특정 USER_ID에 대한 최근의 모든 행 (order by DATE desc)을 얻으려고해야 days 열의 SUM이 X보다 큽니다. 예를 들어,이 경우 X = 7이면 SUM (일) = 24 인 세 개의 첫 번째 행을 가져옵니다.

답변

5

시도해보십시오. 여기서 하위 쿼리의 합계를 계산할 지역 변수를 사용합니다.

select 
    user_id, 
    days, 
    date 
from 
    (
    select 
     user_id, 
     days, 
     date, 
     @sum_days := @sum_days + days as sum_days 
    from 
     myTable 
    order by 
     date desc 
    ) t 
    cross join (select @sum_days := 0) const -- resetting your @sum_days var. 
where 
    sum_days < X -- fill a number in for X here. 
+0

메모 : 하나의 쿼리 문에이 내용을 넣을 수 있으려면 내부에서 'MyTable 교차 결합 (select @sum_date : = 0) const'로 내부를 변경할 수 있습니다. –

+0

당신은'WHERE user_id ='를 사용하지 않았습니다. 하위 쿼리 또는 외부 쿼리에 있어야합니까? – Noam

+0

@Noam 하위 쿼리 –