mysql 获取特定结果的行号

标签 mysql group-by sql

我的网站允许用户记录出价。每个出价均单独保存并与用户 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/

相关文章:

sql - 根据它们之间的间隔对时间戳进行分组

sql - 从脚本中获取 sql 日志文件名

MySQL,使用带 2 个键的 ORDER BY

mysql - 在数据库中存储分布数据组合的最佳方式

mysql - 在 win 7 上的 IBM netezza Aginity 工作台中查找数据库大小时出错

php - 用户之间的消息 : show conversations

mysql - 通过返回 null 进行分组

c# - Razor View 中的 foreach 无法识别 if 条件

Mysql 选择 1 个月前保存的记录,如果没有找到,则选择较旧的记录

php - 带有其他参数的 MySQL NOT IN 语句