从对中检索单个

发布于 2024-12-12 17:29:59 字数 306 浏览 0 评论 0原文

这是一个SQL查询问题。

如果你有一个像这样的表:

ID1         ID2
1709    1689
1689    1709
1934    1501
1501    1934

并且你想像这样检索:

ID1         ID2
1709    1689
1934    1501

你会怎么做?请注意,(1709, 1689) 和 (1689, 1709) 是相似的对,只是 ID 被移动了。我的目的是从这些相似的元组中获取单个元组。

This is a SQL query question.

If you have a table like this:

ID1         ID2
1709    1689
1689    1709
1934    1501
1501    1934

And you want to retrieve like this:

ID1         ID2
1709    1689
1934    1501

How would you do that? Please note that (1709, 1689) and (1689, 1709) are similar pairs just the IDs being shifted. My purpose is to get a single tuple out of these similar tuples.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

指尖上的星空 2024-12-19 17:29:59

试试这个,它应该适用于任何支持 CASE 的方言(您不指定您使用的产品):

 SELECT DISTINCT
    CASE WHEN ID1 < ID2 THEN ID1 ELSE ID2 END AS ID1,
    CASE WHEN ID1 < ID2 THEN ID2 ELSE ID1 END AS ID2
    FROM Table

这会将所有行首先转换为具有较低的 ID,然后使用 DISTINCT 删除重复项。

Try this, which should work in any dialect (you don't specify what product you're using) that supports CASE:

 SELECT DISTINCT
    CASE WHEN ID1 < ID2 THEN ID1 ELSE ID2 END AS ID1,
    CASE WHEN ID1 < ID2 THEN ID2 ELSE ID1 END AS ID2
    FROM Table

This converts all the rows to have the lower ID first, then uses DISTINCT to remove duplicates.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文