sql - 如果它匹配值则返回行,除非它的唯一标识符匹配错误的值
问题描述
问题:
我有一个看起来像这样的表:
我想返回以下内容:
我只想返回项目类别组,其中该类别中的所有项目只能是已关闭的阶段。
我尝试过的: 据我所知,它只生成所有已关闭阶段的项目的列表,但我想排除其中任何项目未关闭的项目类别。
SELECT Project_Category, Project, Stage, Reason
FROM Table
WHERE Project_Category IN (
SELECT Project_Category
FROM Table
GROUP BY Project_Category
HAVING COUNT(DISTINCT Project) > 1
)
AND Stage = 'Closed'
AND Reason = 'no award'
ORDER BY Project_Category
解决方案
我只想返回项目类别组,其中该类别中的所有项目只能是已关闭的阶段。
您可以使用not exists
:
select t.*
from t
where not exists (select 1
from t t2
where t2.Project_Category = t.Project_Category and
t2.Stage <> 'Closed'
)
推荐阅读
- mongodb - 如何在 Mongo 中保存 HTML 并在 Thymeleaf 中显示
- spring - 如何使用 Steeltoe 扩展从 spring 配置服务获取多个配置文件到 dotnetcore 应用程序?
- ios - UIImageView 使用 VIPER 从 URL 加载图像
- machine-learning - 将人脸识别与人体姿态估计相结合
- android - MPAndroidChart:(Stacked BarChart)无法设置新的 ValueFormatter
- javascript - 动态路由 NuxtJS
- php - 使用 PHP 验证保护表单操作属性免受 XSS 攻击
- node.js - Github 操作 - node.js CI npm 测试挂起 [Angular9]
- python - 在 Django 模型类列表视图中,如何允许用户选择对象的顺序?
- vue.js - Vue 仅从 dateTime 显示日期