我在表Hyperlink中有两列,源和目标,用于存储超链接的源和目标.
source | destination
--------------------
a | b
b | c
c | d
c | b
Run Code Online (Sandbox Code Playgroud)
有两个超链接涉及b和c.两个超链接之间的区别是超链接的方向.但是,我的目标是检索唯一的超链接,无论哪个方向.因此,对于从b到c和从c到b的超链接,我只想选择其中一个.任何人都会这样做.
所以我的结果应该是这样的:
source | destination
--------------------
a | b
b | c
c | d
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能够在Java中实现这一点,在使用JDBC执行SQL语句之前进行一些处理.然而,当桌子变得非常大时,这将非常繁琐.
我想知道无论如何我都可以用SQL来做这件事.
我尝试了,SELECT DISTINCT source,destination FROM Hyperlink但它返回了我独特的排列.我需要独特的组合.
谢谢!
小智 4
使用 less() 和 Great() 运算符可以轻松实现这一点,但由于 MySQL 不支持它们,因此您需要使用 CASE 构造来获取更小/更大的值。对于两列,这是可以的,但是一旦涉及更多列,这个解决方案就会变得非常混乱
select distinct
case
when source < destination then source
else destination
end as source,
case
when source > destination then source
else destination
end as destination
from hyperlinks
Run Code Online (Sandbox Code Playgroud)