2009-08-04 5 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行のリストが返された場合は、リストの真ん中を見て、行数を自分で数えることなく「これは150番目の最高入札額」と言うことができます。 –

関連する問題