0

我有一个简单的表格,其中包含有关元素之间双向链接的信息。表如下所示:

link_id | link_side_a_element_id | link_side_b_element_id
---------------------------------------------------------
      1 |                    100 |                    200
      2 |                    200 |                    100
      3 |                    300 |                    400
      4 |                    400 |                    300

我想要的只是选择元素之间的唯一链接,无论哪个元素是 sideA 或 sideB。例如,100 和 200 之间的链接与 200 和 100 之间的链接相同,查询应该只返回一条记录,例如:

link_side_a_element_id | link_side_b_element_id
-----------------------------------------------
                   100 |                    200
                   300 |                    400

这对我来说就足够了。但是坚持写正确的选择DML......现在我用Java做,使用正确的hashCode()和equals()方法获取所有数据到Set。这目前对我有用,但想在 SQL Management Studio 中正确获取数据......如何实现这一点?

4

1 回答 1

2

只需选择两个项目应该出现的顺序(例如,总是首先列出最低/最早的),然后DISTINCT对其运行:

SELECT DISTINCT
   CASE WHEN link_side_a_element_id < link_side_b_element_id THEN link_side_a_element_id
        ELSE link_side_b_element_id END as a,
   CASE WHEN link_side_a_element_id < link_side_b_element_id THEN link_side_b_element_id
        ELSE link_side_a_element_id END as b
FROM
    table
于 2013-04-25T08:24:43.587 回答