mysql按名称分组查询,按id排序,按id限制

标签 mysql sql

我有一张这样的 table

id   name   amount
 1   fish    120
 1   meat    230
 2   meat    110
 2   fish    78
 1   salad   50
 3   meat    103
 3   salad    22
 2   salad    34

我想编写一个查询,将名称分组并求和它们的数量,但它应该限制为前两个 id,因此按名称对项目进行分组并对每个匹配的名称求和...这应该将其限制为前两个 id .那只是 id 1 和 2。留下 id 3。注意。 ID 是来自另一个表的外键。

这是我试过的。但它不起作用

select name, sum(amount) from table1 group by amount, id order by id limit 2

计算后只输出2个结果

name   amount
fish   198
meat   443

我期待这样的事情

name   amount
fish   198
meat   340
salad  84

添加 id 仅为 1 和 2 的项目数量并按名称分组

最佳答案

select name, sum(amount)
from
  (SELECT id, name, amount,
       CASE WHEN @name=name THEN @rown:=@rown+1 ELSE @rown:=0 END as rn,
       @name:=name 
  FROM table1, (select @rown:=0, @name:='') s
  ORDER BY name, id
  ) sub
where rn<=1
group by name

输出

fish    198
meat    340
salad   84

关于mysql按名称分组查询,按id排序,按id限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45437431/

相关文章:

mysql - 用于针对重复行插入或更新记录的存储过程

php - 用于连接的查询生成器新索引

python - Peewee:有限制地删除

java - SpringMvc+ hibernate : Getting NullPointerException in manually inserting data to table

mysql - 监听数据库表更新/更改

SQL Update 如果 null 加 1 否则加 1 到当前值

sql - bigquery : How should I fix my code to get normalized numbers? 中的规范化(静态)

MySQL 自动增量不适用于 INT(12)

mysql - 添加两个子查询以生成第三列

php - 使用具有多个 y 轴的 SQL Server 数据库绘制流程图