今日、私はいくつかの大きな助けを受け取りましたが、クエリにそれを実装する必要があるときは、思ったよりも困難でした。私の実際のクエリには、いくつかの左結合が含まれています。
T3M列とT1G列に基づいて10-1のランキングを示すT3MOutputとT1GOutputの2つの列を追加したいと思います。そこにある最も大きい値はランキングスケールで10を取得し、最も低い(負の値)は1を取得する必要があります。競馬は、開始時に15頭未満である可能性があります。10-1を受け取った10の最良の値の後、残りも値1を取得する必要があります。
フィドル:http ://sqlfiddle.com/#!2 / 9c5fc / 4
このコード行または他のソリューションをどこに実装する必要がありますか?全体を通して値1しか得られません。
(SELECT @row:=11 r) rows
すべてのコードは次のとおりです。
SELECT
base.number as NR,
rank.rpo AS RPO,
rank.rsp AS RSP,
rank.rsv AS RSV,
timer.t3m AS T3M, CASE WHEN @row>1 THEN @row:=@row-1 ELSE 1 END T3MOutput,
timer.t1g AS T1G, CASE WHEN @row>1 THEN @row:=@row-1 ELSE 1 END T1GOutput
FROM round
LEFT JOIN base
ON round.id = base.round_id
LEFT JOIN rank
ON round.id = rank.round_id AND rank.number = base.number
LEFT JOIN timer
ON round.id = timer.round_id AND timer.number = base.number
ORDER BY nr