从两列中选择不同的组合

pap*_*lip 14 mysql sql

我在表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)