错误与修正
错误与修正
-- 错误:name 既不在 GROUP BY 也不是聚合
SELECT city, name, COUNT(*)
FROM users
GROUP BY city; -- ERROR
-- 修正 1:把列加入分组
SELECT city, name, COUNT(*)
FROM users
GROUP BY city, name; -- 结果粒度随之变化
-- 修正 2:用聚合表达
SELECT city, MAX(name) AS sample_name, COUNT(*)
FROM users
GROUP BY city;| MySQL | 默认启用 ONLY_FULL_GROUP_BY;检测到主键函数依赖时允许取同表其他列 |
|---|---|
| PostgreSQL | 标准行为同样要求;主键可带动同表其他列 |