我想把表格的十字架产品与自身结合起来,但我只想要不对称的结果。
例如,假设我有这些主题代码:
CH10001
CS21003
MA10001
有条件的交叉产品"不等于"将导致6行:
CH10001,CS21003
CH10001,MA10001
CS21003,MA10001
CS21003,CH10001
MA10001,CH10001
MA10001,CS21003
但我想在输出中只有3行。那就是:
(CH10001,CS21003) OR (CS21003,CH10001)
(CH10001,MA10001) OR (MA10001,CH10001)
(CS21003,MA10001) OR (MA10001,CS21003)
有人可以帮忙吗?
答案 0 :(得分:2)
这应该这样做
SELECT DISTINCT
case when a.courseID <= b.courseID
then a.courseID
else b.courseID
end id1,
case when a.courseID <= b.courseID
then b.courseID
else a.courseID
end id2
from course A cross join course B
HAVING id1 <> id2
返回第一个结果
[CH10001 CS21003]
[CH10001 MA10001]
[CS21003 MA10001]