用于比较行的 SQL 查询
假设我们有一张表:
id1 id2
1 2
2 1
3 4
4 3
预期输出是
id1 id2
1 2
3 4
第 1,2 行和第 2,1 行相同,并且只需要输出一个。 这个的 SQL 查询是什么?
Let's suppose we have a table:
id1 id2
1 2
2 1
3 4
4 3
The expected output is
id1 id2
1 2
3 4
Rows 1,2 and 2,1 are same, and only one needs to be outputted.
What's the SQL query for this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
假设您的
RDBMS
支持LEAST
和GREATEST
(Oracle支持):跨平台版本:
Assuming your
RDBMS
supportsLEAST
andGREATEST
(Oracle does):Cross-platform version:
使用 Union 的另一种解决方案
Another solution using Union
我对你想要做的事情的解释是:返回行是 id1 匹配 id2 并且 id2 匹配 id1,但仅当 id1 也小于或等于 id2 时返回该集合中的行。
从中选择x.id1、x.id2
我的表 x、我的表 y
其中 x.id1 = y.id2 且 y.id1 = x.id2 且 x.id1 <= y.id1
My interpretation of what you're trying to do is: return rows were id1 matches id2 and id2 matches id1, but only return rows from that set when id1 is also less than or equal to id2.
select x.id1, x.id2 from
myTable x, myTable y
where x.id1 = y.id2 and y.id1 = x.id2 and x.id1 <= y.id1
我最近也必须解决完全相同的问题。请参阅消除重复项。
Exact same question I also had to solve recently. See Eliminating duplicates.