0

如何从表中的所有列中检索不同的值。

Select Distinct col1, col2, col3, col4 from table1将通过检查所有列的相等性来给出唯一记录。但是我需要表格中的所有不同值吗?提前致谢。

例如:我的表有以下记录:

Col1                  Col2                  Col3                    Col4
------------------------------------------------------------------------ 
Melbourne             Sit1                  10.0                    5.3 
Melbourne             Sit2                  10.1                    5.4 
Sydney                Sit1                  10.0                    5.3 
Sydney                Sit3                  10.0                    5.3 
Bangalore             Sit1                  10.5                    0.1

最终结果应如下所示:

Result
----------------
Melbourne
Sydney
Bangalore
Sit1
Sit2
Sit3
10.0
10.1
10.5
5.3
5.4
5.1

顺序无所谓。

4

1 回答 1

2

你可以这样做:

select col1 from table union
select col2 from table union
. . .
select coln from table;

使用union删除重复值。请注意,这假定列类型是兼容的(例如都是字符串)。

编辑:

如果表中的列必须只有一种类型。(好吧,它可能是一个变体,但这可能不是一个简化。)您可以将所有内容转换为varchar2()

select cast(col1 as varchar2(255)) from table union
select cast(col2 as varchar2(255)) from table union
. . .
select cast(coln as varchar2(255)) from table;

或者,您可以按数据类型对列进行分组,并为每一列单独运行,或者为每种数据类型单独运行一列。您不太可能在数据类型之间进行完全匹配,因此这可能会满足您的需要。

于 2013-09-19T11:43:32.787 回答