我有一张这样的 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/