sql - T-SQL 从表中删除交叉对
问题描述
我从表中删除交叉对有问题。
示例表:
X1 X2
-------------
1 2
2 1
1 2
3 2
2 3
1 3
预期结果
X1 X2
------------
1 2
1 3
目前我正在考虑遍历表行并删除参考行和重复行(如果找到),但也许我可以在一个查询中做到这一点?欢迎任何帮助。谢谢你。
解决方案
嗯。. . 如果我理解正确,您想枚举这些对,然后抵消反向对。这是一种方法:
with t as (
select x1, x2, row_number() over (partition by x1, x2 order by x1) as seqnum
from mytable t
)
select t.*
from t
where not exists (select 1
from t t2
where t.x2 = t2.x1 and t.x1 = t2.x2 and t.seqnum = t2.seqnum
);
结果
x1 x2 seqnum
1 2 2
1 3 1
推荐阅读
- prompt - 鱼壳暂时禁用所有提示
- django - 如何将数据从一个输入字段提供给 Django 生成表单的两个输入字段?
- python - 无法修复python中的文件处理问题
- laravel - 将应用程序从宅基地移动到 docker
- android - 以编程方式将我的应用程序添加到自动启动应用程序列表和运行状态
- html - 如何垂直对齐1顶部2底部图片
- go - Go 1.12 模块:非本地导入中的本地导入
- firebase - 如何在 Node Express 上发送 PUT 请求
- javascript - jquery datatable 使用表单编辑表格行数据
- javascript - 如何知道动态组件何时已完全加载