Mysql 按两列分组统计记录
我试图计算每个Mysql 按两列分组统计记录,mysql,sql,Mysql,Sql,我试图计算每个fk_id有多少个amount变量。如果存在多个变体,则我希望返回该记录,否则我希望忽略该记录 下面的陈述有什么错 SELECT *, count(fk_id) AS `count` FROM table WHERE count > 1 GROUP BY fk_id, amount; 表: +-----------+----------+--------------+ | id | fk_id | amount | +-----------+
fk_id
有多少个amount
变量。如果存在多个变体,则我希望返回该记录,否则我希望忽略该记录
下面的陈述有什么错
SELECT *, count(fk_id) AS `count` FROM table
WHERE count > 1
GROUP BY fk_id, amount;
表:
+-----------+----------+--------------+
| id | fk_id | amount |
+-----------+----------+--------------+
| 1 | 100 | 5 |
| 2 | 200 | 10 |
| 3 | 200 | 10 |
| 4 | 200 | 10 |
| 5 | 200 | 15 |
+-----------+----------+--------------+
预期产出:
+-----------+----------+--------------+--------------+
| id | fk_id | amount | count |
+-----------+----------+--------------+--------------+
| 2 | 200 | 10 | 2 |
+-----------+----------+--------------+--------------+
不能在
WHERE
子句中使用聚合函数。改用HAVING
子句:
SELECT MIN(id) as id,fk_id,amount, count(fk_id)-1 AS `count`
FROM table
GROUP BY fk_id, amount
HAVING count(fk_id)>1
结果:
ID FK_ID AMOUNT COUNT
2 200 10 2
请参阅中的结果