mysql - 仅当重复列具有相同数据时才获取不同的列
问题描述
我有这种类型的表:
+-----TABLE1----+
| Name, Boolean |
| A , 0 |
| B , 0 |
| B , 0 |
| A , 1 |
| C , 1 |
| D , 0 |
| C , 0 |
| A , 0 |
| A , 1 |
| B , 0 |
| D , 0 |
+--------------+
我想选择不同的所有名称,它们的重复布尔值也为 0。所以结果将是:
+---------------+
| RESULT: |
| Name |
| B |
| D |
+---------------+
因为 A 和 C 也包含“1”的布尔值,所以它们不会被获取
我可以:
SELECT DISTINCT name, MAX(boolean) as boolean FROM table1 GROUP BY name;
但是,如果我只想获取它们的 max(boolean) 为 0 的结果,我需要使用什么条件?
我不能在一个查询中使用两个选择语句,因为我们正在谈论大数据数据库。所以在我的情况下,这个解决方案不是一个选项:
SELECT DISTINCT t1.name FROM table1 t WHERE t1.name NOT IN (SELECT DISTINCT t2.name FROM table1 t2 WHERE t2.boolean = 1);
在使用“JOIN”时也想不出一个选项。
有什么解决办法吗?
提前致谢!:)
解决方案
您可以使用聚合:
select name
from table1 t
group by name
having min(boolean) = max(boolean);
推荐阅读
- python - 为什么 pymongo find_one 在不同的操作系统中速度较慢?
- vba - 第三个组合框的结果应该由VBA用户表单中其他两个组合框的结果决定?
- kotlin - Kotlin Playground – 变量 'mainProperty' 初始化器是多余的
- javascript - ReactJS 表单:父组件状态更新,但子字段被清空且道具保持不变
- sql - 获取同一组中有多个记录
- vue.js - Vue 方法不会将 d3 scale 识别为函数
- spring - 基于正确配置文件设置的 Spring Boot 运行 tomcat
- sql - 导入 csv excel 文件时,Laravel 7 时间戳迁移始终返回 0000-00-00 00:00:00
- react-native - React 本机构建过程失败
- tensorflow - rllib - 从检查点获取 TensorFlow 或 PyTorch 模型输出