sql - 选择行,对于 A 列中的相同值,B 列在所有行中都具有特定值
问题描述
我需要找到行,对于 A 中的相同值,B 列在所有行中都具有特定值。
例如,给定表:
A栏 | B栏 |
---|---|
妈妈 | 成功 |
妈妈 | 成功 |
爸爸 | 成功 |
爸爸 | 失败 |
孩子 | 失败 |
孩子 | 失败 |
假设我想要 A 列中相同值的 B 列全部为“失败”的所有行。在这种情况下,我想要:
A栏 | B栏 |
---|---|
孩子 | 失败 |
孩子 | 失败 |
解决方案
您可以使用not exists
:
select t.*
from t
where not exists (select 1
from t t2
where t2.a = t.a and t2.b <> 'failure'
);
推荐阅读
- react-native - 在 mac m1 上使用 Detox 和 Android 模拟器运行 E2E 测试
- android - 在 VS Code 中的 Flutter 项目的根项目“android”中找不到任务“assembleDebug”
- node.js - 升级到 v16 时如何使用 Node 清除 Heroku 中的缓存?
- ruby-on-rails - 在 Heroku 上运行许多 rake 任务时出现内存问题
- reactjs - 上传文件时转到错误的 url
- python - 如何在程序运行时在 Python 中更新 tkinter texbox
- azure-devops - 天蓝色静态 Web 应用程序,如何从同一个 git 存储库构建两个不同的 Web 应用程序(一个产品和一个非产品)?
- c - 创建一个字符串的副本,但在 C 中反转
- javascript - 来自用户输入的维度数组,然后在 JavaScript 中进行转换
- python - 获取熊猫数据框中每一行中非零值的列索引