2009-08-04 4 views
2
SET @row := 0; 
SELECT * FROM (
SELECT @row := @row+1 AS rank, account_id, keyword, bid_amount ,timestamp 
FROM bids WHERE keyword='programmers' 
ORDER BY bid_amount DESC, timestamp ASC 
) AS derived_table; 

나는이 곳을보고 난 세트가 @ 기호와 함께 무엇을하는지 궁금 : =이 SQL 문은 무엇을 수행합니까? (MySQL의)

감사

답변

6

그것은 행 번호 열을 생성합니다.

@row은 정수 변수입니다. :=은 이전 행의 값이 @row 인 각 행에 대한 변수를 설정합니다. 그래서, 당신은 어떤 숫자 행을 알려주는 멋지게 증가하는 컬럼을 얻습니다.

+1

그러나이 설정 예제의 설정 행은 0과 같고 순위는 0 번째를 선택합니다. 기본적으로 맨 처음부터 선택합니까? –

+1

나는 왜 단순한 select id, column1, column2, ...을 테이블에서? –

+2

@sarmenhbb 출력의 읽기 쉽도록하기위한 것입니다. 300 행 목록이 반환되면 목록의 가운데를보고 행을 직접 계산하지 않아도 "this is 150th highest bid_amount"라고 말할 수 있습니다. –

관련 문제