我有一个表t(一个字符),有3个值“a”“b”“c”我想计算一个唯一的子集的carbohydrate产品没有你的身份。
Oracle SQL
从t t1,t t2中选择t1.a t1 a,t2.a t2 a;
a a
a b
a c
b a
b b
b c
c a
c b
c c
字符串
删除相同条目ok easy
从t t1,t t2中选择t1.a t1 a,t2.a t2 a,其中t1.a<>t2.a;
a b
a c
b a
b c
c a
c b
型
但是我想消除最后一个结果集中的duplets,例如,a b和b a对我来说是一样的,我想要其中之一,这样我想要的结果就可以是
a b
a c
c b
型
我如何才能实现这一点与SQL语句(甲骨文风格)(没有过程或任何迭代编程请)?
从t t1,t t2中选择t1.a t1 a,t2.a t2 a,其中t1.a<>t2.a和t2.a不在(从t t3中选择a,其中t3.a=t1.a);
不更改rresult集
解释我想要在一个grphical风格:
a b c
a- - -
b* - -
c* * -
型
也行
a b c
a- * *
b- - *
c- - -
型
我只想在上面的表格中的 * 组合{(b,a),(c,a),(c,b)}或{(a,b),(a,c),(b,c)}这在SQL中是可能的吗?
2条答案
按热度按时间92dk7w1h1#
首先,你真的应该学习ANSI SQL JOIN语法,你正在使用的逗号分隔的连接语法已经30多年没有被认为是好的做法了。
您可以使用LEAST和GREATEST来对列进行排序,即turn B| a变成a| B
然后使用DISTINCT删除重复项
mzmfm0qo2#
使用分层查询(避免自联接):
字符串
其中,对于样本数据:
型
产出:
| VALUE1| VALUE2|
| --|--|
| 一|B|
| 一|C|
| B| C|
fiddle