我有一个用于比赛的 MySQL 表,名为users
. 现在,我希望能够创建一个 select 语句,按post_comp DESC, posted_last ASC
. 在这种排序之后,首先返回的人是#1,第二行是#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
, row
,如果它是我特别想要返回的行,则为 1,否则为 0 me
。me
因此,如果我正在寻找用户的位置zbid=123
,它会对表格进行排序,将所有数据带回给我,并且无论用户在哪里zbid=123
,都会返回一个me=1
结果。row
表示用户在竞争中的位置。
现在,我这工作正常,唯一的问题是它返回所有这些行,我只希望它返回带有me=1
. 我尝试将另一个附加ORDER BY me DESC LIMIT 1
到最后,但这弄乱了之前的顺序并且没有用。还有其他建议吗?