2013-06-26 4 views
0

각 사용자가 테이블에서 둘 이상의 행을 가질 수있는이 테이블을 가지고 있으므로 각 사용자의 맨 위 두 행을 찾고 싶습니다. 사용자의 마지막 두 행을 찾으십시오.

나는이 링크를보고 솔루션

SELECT user_fk, order_number, @num := IF(@group = user_fk, @num +1, 1) AS row_number, @group := user_fk AS dummy 
FROM summary 
ORDER BY `user_fk` ASC 

나는 ROW_NUMBER 증가 있는지 확인하기 위해 위의 쿼리를 사용

SQL - Give me 3 hits for each type only을 시도하지만 나던. 왜 그런가? 이

을하고있다

+0

사용자 정의 변수를 초기화하는 것이 좋겠지 만 나를 위해 일하는 것처럼 보입니다. http://sqlfiddle.com/#!2/3172f0/2 – sgeddes

답변

0
SELECT user_fk, order_number from 
(SELECT user_fk, order_number, @num := IF(@group = user_fk, @num +1, 1) AS row_number, @group := user_fk AS dummy 
FROM summary 
ORDER BY `user_fk` ASC) as x 
where row_number<=2 

로 묶습니다.

+0

쿼리에 영향을 주는지 확신 할 수 없는데, 내 user_fk는 유형입니다 int (5)이며 order_number는 varchar (255)입니다. 이 표에는 약 13,000 개의 행이 있습니다. 위의 쿼리도 사용하십시오. 결코 달리기를 끝내지 않았다. 내가 하위 쿼리를 시도하는 이유 – edelweiss

관련 문제