mysql获取特定结果的行号

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

我的网站允许用户记录出价。每个出价都单独保存并与用户Id关联。用户可以有多个出价,这些出价用于将网站上显示的全部出价相加

我在sql中尝试的是从结果集中返回用户总体出价的位置

我使用的sql如下所示,但当我使用group by命令时会出现问题-排序似乎恢复为默认的db顺序,而不是按用户出价金额的总和:

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