我在表超链接中有两列,源和目标,用于存储超链接的源和目标。
source | destination
--------------------
a | b
b | c
c | d
c | b
有两个超链接同时涉及B和C。这两个超链接之间的区别在于超链接的方向。然而,我的目标是检索唯一的超链接,不管是哪个方向。所以对于超链接,如从B到C和从C到B,我只想选择其中一个。任何人都愿意。
所以我的结果应该是这样的:
source | destination
--------------------
a | b
b | c
c | d
到目前为止,我可以在Java中实现这一点,并在使用JDBC执行SQL语句之前进行一些处理。然而,当桌子变得很大时,这将是非常乏味的。
我想知道是否无论如何我都可以在SQL中这样做。
我尝试过
SELECT DISTINCT source,destination FROM Hyperlink
但是它返回了我独特的排列。我需要独特的组合。谢谢!
最佳答案
使用least()和greatest()操作符很容易实现这一点,但是由于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
关于mysql - 从两列中选择不同的组合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11707758/