mysql - 谁能解决这个mysql语句WHERE COUNT问题?
问题描述
我将两个表连接在一起,我只想列出那些分组的行数与表 A 的值不匹配的行。
table A
id name pieces
1 name_1 6
2 name_2 2
table B
a_id
1
1
2
2
所以我想要的是获取 a.piece<> 分组行计数的所有 a.name。
像这样的东西:
SELECT a.name
FROM a
INNER JOIN b
ON a.id = b.a_id
WHERE a.pieces <> Count(*)
GROUP BY id
这导致 group 函数的无效使用
也尝试了这个:
SELECT a.name,
Count(*) AS count
FROM a
INNER JOIN b
ON a.id = b.a_id
WHERE a.pieces <> count
GROUP BY id
错误:未知列“计数”
在这种情况下,我只想收到这样的 1 行:
name count
name_1 2
因为name_1
有 2 个分组的行table.b
,它不匹配a.piece
是 6。
解决方案
您可以使用MAX()
on pieces
,因为它只是一个标量值,它不会产生影响。这也将使查询符合only_full_group_by
模式
SELECT a.id, a.name, COUNT(*) AS count
FROM a
INNER JOIN b
ON a.id = b.a_id
GROUP BY a.id, a.name
HAVING MAX(a.pieces) <> COUNT(*)
推荐阅读
- javascript - 无法使用 react-select defaultValue 提交表单
- dolphindb - 如何将多个字符串向量组合成一个向量?
- python - 生成元组与列表
- reactjs - 没有视频缩略图预览 Reactjs
- javascript - Discord.js v12 消息发送到特定频道时出错
- html - 我试过“float”和“margin-top”,但图像不会与文本对齐
- python - 在python中为条形图添加标签
- laravel - nWidart 模块关系
- javascript - ENOENT:没有这样的文件或目录,打开 '/var/task/google-cloud-key.json' Vercel
- angular - 无法在 Nx Jest Angular 测试中使用 lib 组件