sql - 根据标志添加/删除 SQL 查询中的两个重复结果
问题描述
我有一个包含数据的表,其中我想抓取所有带有零标志的行以及带有我选择的正标志的行,然后我希望它从包含相同数据的查询中删除所有数据,但是具有负标志值。目前,我正在前端处理所有这些,方法是获取所有 0 和正标志值,然后获取所有负值并将它们从我的第一个结果集中删除所有标志 >= 0 且与负标志行匹配的行。
这些东西总是有点用文字来描述,所以这里有一个示例,我的数据集看起来类似于以下内容:
flag name loc
0 Fred USA
-1 Fred USA
1 Fred CANADA
0 Ryan CANADA
0 Steph SPAIN
-1 Steph SPAIN
1 Steph CANADA
-2 Steph CANADA
2 Steph RUSSIA
如果我想要标志为 1 的所有数据,我希望返回以下内容
flag name loc
1 Fred CANADA
0 Ryan CANADA
1 Steph CANADA
如果 flag 只是 2,我会想要
flag name loc
0 Fred USA
0 Ryan CANADA
2 Steph RUSSIA
最后,如果标志是 1 或 2,我会想要
flag name loc
1 Fred CANADA
0 Ryan CANADA
2 Steph RUSSIA
请注意,尽管在此示例中标志似乎是连续的,但不能假定较高的标志项是要选择的最终标志行。此外,这是一个更大查询的子查询,它根据此查询收集信息。主查询可以包含任意数量的标志。
此操作在查询中是否可行,还是我应该继续在前端进行繁重的工作?
小提琴:http ://sqlfiddle.com/#!18/de297/1
谢谢
解决方案
这满足您的前两个要求,但我不确定如果
如果标志是 1 或 2,我会想要
方法
DECLARE @YourInt INT = 2
SELECT flag,
name,
loc
INTO #YourInts
FROM table1
WHERE flag = @YourInt
SELECT flag,
name,
loc
FROM #YourInts
UNION ALL
SELECT flag,
name,
loc
FROM table1
WHERE flag = 0 AND
name NOT IN (SELECT name FROM #YourInts WHERE flag = @YourInt)
推荐阅读
- python - 在 Python 中测试模拟 Choice 参数时出现问题 click
- unity3d - 无法在 Unity 中向 oculus 手部跟踪添加交互
- flutter - 如何使用 Dart (Flutter) 发送短信和电子邮件?
- excel - 颜色数据透视表数据取决于行、列和数据值 VBA
- python - 使用通过 pip 安装的包的本地修改版本
- sql - CopyFromRecordset 粘贴到最后一行
- swift - Swift ui macOS 事件检测更改强调色
- .net - 如何优化 .NET EF Core 批量插入?
- sql - 数据块 (AZURE) 到 CSV 中的文本格式
- reactjs - 如何在渲染中与异步数据交互