我正在尝试使用一个通用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