SQL返回重复行,但在引用同一个表两次时,列值被翻转

时间:2018-02-16 15:16:24

标签: sql oracle

我尝试使用公共ID连接自己的表来查找某个列不相等的实例。我的问题是我的脚本返回几乎重复的行,但返回列中的值是交换的(因此不同的行将无效)。

一个例子是:

Select distinct t1.ID, t1.Value V1, t2.Value V2
from t1, t2
where t1.ID = t2.ID 
and t1.Value <> t2.Value

返回:

ID  V1  V2
1   A   B
2   B   A

当我想要它返回单行时:

ID  V1  V2
1   A   B

2 个答案:

答案 0 :(得分:2)

我可以建议吗?

Select t1.ID, t1.Value as V1, t2.Value as V2
from t1 join
     t2
     on t1.ID = t2.ID and
        t1.Value < t2.Value;

请注意,更改为<而非<>

答案 1 :(得分:0)

您可以使用LEAST/GREATEST个功能:

SELECT DISTINCT t1.ID,
     LEAST(t1.Value , t2.Value)   AS V1,
     GREATEST(t1.Value, t2.Value) AS V2
FROM t1
JOIN t2
  ON t1.ID = t2.ID 
WHERE t1.Value <> t2.Value;

<强> DBFiddle Demo