[英]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.