我的网站允许用户记录出价。每个出价均单独保存并与用户 ID 相关联。一位用户可以有多个出价,这些出价用于将网站上显示的总出价相加。
我试图在 SQL 中做的是从结果集中返回用户总体出价的位置。
我使用的 SQL 如下,但当我使用 group by 命令时出现问题 - 排序似乎恢复为默认的数据库顺序,而不是按用户出价金额的总和:
SET @rowcount = 0;
SELECT rowCount, userId FROM (
SELECT userId, @rowcount := @rowcount + 1 as rowCount, sum(amount) as amount FROM bids group by userId order by amount desc
) t when product = xxxxx
感谢有人知道这是否可能吗?
最佳答案
您需要将行计数增量移出子查询。并将您的 WHERE
条件放入其中,否则您的子查询将对给定用户的所有产品的出价求和。
SET @rowcount = 0;
SELECT @rowCount:=@rowcount+1 as rowcount, userId, amount FROM
(
SELECT userId, sum(amount) as amount
FROM bids
WHERE product = xxxxx
GROUP BY userId
ORDER BY amount DESC
) t
关于mysql 获取特定结果的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9251228/