mysql - MySQL - 选择列值仅为0的行,按另一列分组?
问题描述
示例表:
ID, foreign_id, status
ID
是独一无二的,foreign_id
不是。示例行:
1, 1111, 0
2, 2222, 0
3, 3333, 1
4, 1111, 1
5, 4444, 0
我要选择的是唯一foreign_id
状态为 0 的。如果它的状态为 0 但具有相同外国 ID 的另一行的状态为 1,请不要选择它foreign_id
。预期输出:
1, 2222, 0
5, 4444, 0
我可以选择 wherestatus = 0
和 group by foreign_id
,但这只会选择状态为 0 的行,即使可能有另一行与状态相同foreign_id
且状态为 1。
SELECT ID, foreign_id
FROM table
WHERE status = 0
GROUP BY foreign_id
任何帮助表示赞赏。
解决方案
(我对此进行了编辑以证明它有效并澄清了一些事情):
您可能感兴趣的是 HAVING 语句。
您可以在GROUP BY之后使用 HAVING 语句。这是一个很好的解释: https ://www.dofactory.com/sql/having
简而言之,HAVING 语句的作用是让您过滤作为 GROUP BY 表达式的结果返回的数据。
试试这个:
SELECT
foreign_id, MAX(status) AS status
FROM
myTable
GROUP BY
foreign_id
HAVING
MAX(status) = 0
这是它的工作示例(在基本的 MS Access 文件中测试):
如果您有任何问题,请告诉我!
推荐阅读
- python - 在张量流概率中指定 DirichletMultinomial
- html - Angular 6组件未显示
- python - list_of_post() 得到了一个意外的关键字参数“slug”
- javascript - Angular 6,请求 httpClient(类型错误)
- sql-server - 仅当当前数据库为 master 时才能授予服务器范围的权限
- c# - C#使用ServiceController类获取服务登录?
- google-apps-script - Google Apps 表格 if 语句未执行
- python - 在 keras 中进行迁移学习时 fit 和 fit_generator 之间的区别
- batch-file - 将 sqlcmd 输出文件发送到作为变量的目录
- css - 更改动画背景的渐变颜色