我有以下情况:有一张表与钱包和部门有关。我必须对同一部门的用户进行排名。我正在使用的SQL代码正在运行,但是当我尝试输入行号时,它会产生奇怪的结果。我真的尝试了很多不同的策略,但没有任何对我有用。
$this->router->get_request('/get_records', function() {
$records= $this->soap_server->getRecords(array(
'combox1Id' => $_GET['combox_1_id']
));
echo json_encode($records->return);
});
查询的输出是:
select * , @curRow := @curRow + 1 AS row_number
from division_user,
wallet JOIN (SELECT @curRow := 0) r
where division_user.division_id in (select division_user.division_id
from division_user
where division_user.wallet_id in
(select wallet.id from wallet where wallet.user_id = 1 )) AND
division_user.wallet_id = wallet.id
group by wallet.id
order by wallet.weekly_profit_value DESC
期望的结果
1,3
2,5
3,1
答案 0 :(得分:1)
变量和group by
并不总是一起工作。此外,从不在from
子句中使用逗号。 始终使用正确的join
语法。
select duw.*, (@curRow := @curRow + 1) AS row_number
from (select du.*, w.*
from division_user du join
wallet w
on du.wallet_id = w.id
where du.division_id in (select du2.division_id
from division_user du2
where du2.wallet_id in (select w2.id
from wallet w2
where w2.user_id = 1
)
)
group by w.id
) duw cross join
(SELECT @curRow := 0) params
order by w.weekly_profit_value DESC