【发布时间】:2015-07-16 11:11:59
【问题描述】:
我有两个表:第一个是用户数据(名称:users),第二个是用户统计信息(名称:users_stats)。下面是我的排名 MySQL 查询(使用一个表:users_stats):
SELECT d.*, c.ranks FROM (
SELECT sold, @rank:=@rank+1 ranks FROM (
SELECT DISTINCT a.`sold` FROM users_stats a ORDER BY sold DESC
) t,
(SELECT @rank:= 0)
r) c
INNER JOIN users_stats d ON c.sold = d.sold
WHERE login = 'XXXXXX'
RESULTS:
LOGIN_1 - 50 SOLD - RANK 1 (ACTIVE)
LOGIN_2 - 40 SOLD - RANK 2 (ACTIVE)
LOGIN_3 - 40 SOLD - RANK 2 (ACTIVE)
LOGIN_4 - 30 SOLD - RANK 3 (BLOCKED)
LOGIN_5 - 20 SOLD - RANK 4 (ACTIVE)
我想添加到此查询帐户活动条件,因为我不想在不活动或被阻止的人中排名。
我试过把条件查询:
SELECT d.*, c.ranks FROM (
SELECT sold, @rank:=@rank+1 ranks FROM (
SELECT DISTINCT a.`sold` FROM users_stats a ORDER BY sold DESC
) t,
(SELECT @rank:= 0)
r) c
INNER JOIN users_stats d ON c.sold = d.sold
WHERE login = 'XXXXXX'
AND `login` IN (SELECT b.`login` FROM `users` b WHERE b.`active` = 'YES')
...但是我的排名位置被跳过了,例如:
RESULTS:
LOGIN_1 - 50 SOLD - RANK 1 (ACTIVE)
LOGIN_2 - 40 SOLD - RANK 2 (ACTIVE)
LOGIN_3 - 40 SOLD - RANK 2 (ACTIVE)
LOGIN_4 - 20 SOLD - RANK 4 (ACTIVE)
我会很高兴有任何线索! :) 谢谢!
【问题讨论】:
标签: mysql conditional-statements ranking