我有一個名爲users
競爭的MySQL表。現在,我希望能夠通過post_comp DESC, posted_last ASC
製作一個選擇語句來對此表進行排序。在這種排序之後,首先返回的是#1,第二排是#2等等。但是,我想進一步採用這種方式,並返回表中特定用戶的位置。現在,每個用戶都有自己的ID,zbid
。我還需要將WHERE cid=3 AND post_comp>0
添加到查詢的末尾。複雜的MySQL排序的競爭位置
這是我曾嘗試:
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
,row
,me
其中me
是1,如果它是我特別想要的行返回,否則返回0。因此,如果我正在查找zbid=123
的用戶位置,它將對錶格進行分類,將所有數據返回給我,以及zbid=123
的用戶所在的任何位置也將返回me=1
結果。 row
表示用戶在競賽中的位置。
現在,我工作正常,唯一的問題是,它返回所有這些行,我只希望它返回與me=1
一行。我嘗試追加另一個ORDER BY me DESC LIMIT 1
到最後,但這混亂了以前的順序,並沒有工作。還有其他建議嗎?
非常感謝:)。 – 2012-08-15 23:28:52