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

  • 本文关键字:引用 两次 翻转 返回 SQL 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

我可以建议吗?

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;

请注意,更改是<而不是<>

您可以使用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

最新更新