mysql获取特定结果的行号
我的网站允许用户记录出价。每个出价都单独保存并与用户Id关联。用户可以有多个出价,这些出价用于将网站上显示的全部出价相加 我在sql中尝试的是从结果集中返回用户总体出价的位置 我使用的sql如下所示,但当我使用group by命令时会出现问题-排序似乎恢复为默认的db顺序,而不是按用户出价金额的总和:mysql获取特定结果的行号,mysql,group-by,sql,Mysql,Group By,Sql,我的网站允许用户记录出价。每个出价都单独保存并与用户Id关联。用户可以有多个出价,这些出价用于将网站上显示的全部出价相加 我在sql中尝试的是从结果集中返回用户总体出价的位置 我使用的sql如下所示,但当我使用group by命令时会出现问题-排序似乎恢复为默认的db顺序,而不是按用户出价金额的总和: SET @rowcount = 0; SELECT rowCount, userId FROM ( SELECT userId, @rowcount := @rowcount + 1 as
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
如果有人知道这是否可行,我将不胜感激。您已经尝试过了吗
SET @rowcount = 0;
SELECT rowCount, userId FROM (
SELECT userId, @rowcount := @rowcount + 1 as rowCount from
(select sum(amount) as amount, userId FROM bids group by userId) s
order by s.amount desc
) t where product = xxxxx
如果我理解正确,您可以尝试以下方式:
SELECT @rownum:=@rownum+1 ‘rank’, userId FROM (SELECT product, userId, sum(amount) AS amount FROM bids GROUP BY userId) t, (SELECT @rownum:=0) r WHERE t.product = xxxx ORDER BY t.amount DESC;
您需要将行数增量移出子查询。并将您的
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