繁体   English   中英

T-SQL:表中的逻辑唯一表行

[英]T-SQL: logical unique table rows in table

我有一个简单的表,包含有关元素之间的双向链接的信息。 表看起来像这样:

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()方法获取所有数据。 这对我来说现在很有用,但是想在SQL Management Studio中正确获取数据......如何实现这一目标?

只需选择两个项目应该出现的顺序 (例如,始终列出最低/最早的第一个),然后运行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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM