sql - SQL - 如果有对,则避免选择
问题描述
是否可以为这种情况编写 MS SQL 查询?如果有一对 1 和 -1 ,我根本不想选择这些条目。
COL1 | COL2 | 笔记 |
---|---|---|
一个 | 1 | 我不想选择此条目,因为它与 A -1 配对 |
一个 | -1 | 我不想选择此条目,因为它与 A 1 配对 |
一个 | 1 | 可以选择 - 没有对(这个 A 没有 -1 ) |
乙 | 1 | 可以选择 - 没有配对 |
C | 1 | 可以选择 - 没有配对 |
D | 1 | 我不想选择此条目,因为它与 D -1 配对 |
D | -1 | 我不想选择此条目,因为它与 D 1 配对 |
解决方案
一种方法是聚合。假设只有 -1 和 1 并且没有具有相同符号的重复项:
select col1, max(col2), col3
from t
group by col1, col3
having count(*) = 1;
或者,您可以使用 `not exists:
select t.*
from t
where not exists (select 1
from t t2
where t2.col3 = c.col3 and t2.col1 = t.col1 and
t2.col2 = - t.col1
);
推荐阅读
- python - 如何从 Windows 服务锁定窗口?
- javascript - 有人可以解释为什么每次点击时 hjk 都不打印
- mysql - 在 Spring Boot 应用程序中使用从 MySQL 检索 sql 插入实体的特殊字符的问题
- discord.js - Discord.js 频道更新事件,忽略某些频道
- rest - 我应该在 rest api 中使用 GET 或 POST 或 PUT 来根据少数输入参数获取输出,这些输入参数将被接受为请求正文的一部分
- git - 尝试镜像 Git 存储库时,我收到“不是 git 存储库”错误
- c# - 如何遍历json数组
- angular - 构建 Angular 项目错误“重复标识符 'IteratorResult'”
- node.js - Electron:“路径”参数必须是字符串类型。接收到的类型对象
- azure - Azure.RequestFailedException:不知道这样的主机