2014-11-09 2 views
0

다음과 같이 mysql 데이터베이스가 있습니다. phpmyadmin과 함께 사용하고 있습니다.mysql 쿼리의 행 종속 변수

id time_came time_exit 
    0  2   3 
    1  3   5 
    5  5   1 
    7  1   10 
    9  1   8 

나는 다음과 같은 논리 "대기"와 같은 다른 열을 원하는

foreach(i in time_came){ 
    wait=count(time_came<i&&i<time_exit) 
} 

그럼 각 열 역시 "대기"값을가집니다. 나는 PHP로 이것을 할 수있다. 그러나 나는 mysql을 가지고 이것을 할 필요가있다. "i"가 각 행마다 다양하기 때문에 혼란 스럽습니까?

미리 감사드립니다.

+0

내가 의사 코드를 좋아한다. 그것은 나를 똑같은 가짜 답을주고 싶습니다. –

+0

당신은 나를 위해 대답이 있다면 위대 할 것입니다 :) –

답변

0

이게 원하는가요?

select t.*, 
     (select count(*) 
     from table t2 
     where t2.time_came between t.time_came and t2.time_came < t.time_exit 
     ) as wait 
from table t; 

편집 :

업데이트를 수행하려면, 당신은 join를 사용해야합니다 :

update table t join 
     (select t.id, 
       (select count(*) 
       from table t2 
       where t2.time_came between t.time_came and t2.time_came < t.time_exit 
       ) as wait 
     from table t 
     ) as newval 
     on t.id = newval.id 
    set t.wait = newval.wait 
+0

고마워요. "t2"란 무엇입니까? "t"는 기존 테이블이라고 생각하십니까? –

+0

테이블 별칭이며 상관 된 하위 쿼리에 필요합니다. 'table'이 어디에 있는지 (당신이 질문에서 지정하지 않은) 테이블 이름을 넣으십시오. –

+0

완벽. 이것은 훌륭하게 작동합니다. 그런 쿼리를 어떻게 배울 수 있습니까? :) –