と呼ばれるコンテスト用の MySQL テーブルがありますusers
。ここで、このテーブルを でソートする select ステートメントを作成できるようにしたいと考えていますpost_comp DESC, posted_last ASC
。この並べ替えの後、最初に返される人は誰でも #1、2 番目の行は #2 などです。ただし、これをさらに進めて、テーブル内の特定のユーザーの位置を返したいと思います。現在、各ユーザーは独自の ID を持っていますzbid
。WHERE cid=3 AND post_comp>0
また、クエリの最後に追加する必要があります。
これは私が試したことです:
SELECT u.zbid,u.post_comp, @curRow := @curRow + 1 AS row, IF(u.zbid=123,1,0) AS me FROM users u, (SELECT @curRow := 0) r WHERE cid=3 AND post_comp > 0 ORDER BY u.post_comp DESC, u.posted_last ASC
ここ
zbid
でpost_comp
、特に返したい行の場合は 1、それ以外の場合は 0row
ですme
。me
でユーザーの位置を探している場合zbid=123
、テーブルをソートし、すべてのデータを私に戻し、ユーザーがどこにいてzbid=123
も結果を返しme=1
ます。row
競争におけるユーザーの位置を示します。
今、私はこれでうまくいきます.唯一の問題は、これらの行をすべて返すことですme=1
. 最後に別のものを追加しようとORDER BY me DESC LIMIT 1
しましたが、以前の順序が台無しになり、機能しませんでした。他の提案はありますか?