5

如果我有一张桌子,例如

1 A

1 B

1 A

1 B

2 C

2 C

我想从两列中选择不同的,这样我就可以得到

1 

2 

A

B

C

我该如何表达我的查询?是连接列并将它们包装在不同的函数运算符周围的唯一方法吗?

4

6 回答 6

7

您可以使用 aunion从两列中创建一个包含所有值的表:

select  col1 as BothColumns
from    YourTable
union
select  col2
from    YourTable

与 不同union allunion删除重复项,即使它们来自union.

于 2013-05-14T06:12:02.617 回答
2

SQL小提琴

为什么在联合中甚至不同,试试这个:

select cast(id  as char(1)) from test
union
select val from test
于 2013-05-14T06:25:56.013 回答
2

请试试:

Select Col1 from YourTable
union
Select Col2 from YourTable

UNION删除重复记录(结果中的所有列都相同),UNION ALL不删除。请检查UNION 和 UNION ALL 有什么区别

对于多个列,您可以选择 UNPIVOT。

SELECT distinct DistValues
FROM 
   (SELECT Col1, Col2, Col3
   FROM YourTable) p
UNPIVOT
   (DistValues FOR Dist IN 
      (Col1, Col2, Col3)
)AS unpvt;
于 2013-05-14T06:13:20.383 回答
1

试试这个——

DECLARE @temp TABLE
(
      Col1 INT
    , Col2 NVARCHAR(50)
)

INSERT INTO @temp (Col1, Col2)
VALUES (1, 'ab5defg'), (2, 'ae4eii')

SELECT disword = (
    SELECT DISTINCT dt.ch
    FROM (
        SELECT ch = SUBSTRING(t.mtxt, n.number + 1, 1) 
        FROM [master].dbo.spt_values n
        CROSS JOIN (
            SELECT mtxt = (
                SELECT CAST(Col1 AS VARCHAR(10)) + Col2
                FROM @temp
            FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'
            )
        ) t
        WHERE [type] = N'p'
        AND number <= LEN(mtxt) - 1
    ) dt
    FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'
)

或者试试这个 -

DECLARE @temp TABLE
(
    a CHAR(1), b CHAR(1)
)

INSERT INTO @temp (a, b)
VALUES 
    ('1', 'A'), ('1', 'B'), ('1', 'A'),
    ('1', 'B'), ('2', 'C'), ('2', 'C')

SELECT a
FROM @temp

UNION

SELECT b
FROM @temp
于 2013-05-14T06:15:56.270 回答
1

因为您要选择的内容在不同的列中,所以您可以使用 如下的联合

select distinct tarCol from  
(select distinct column1 as tarCol from table
 union 
select distinct column2 from table) as tarTab
于 2013-05-14T06:16:44.153 回答
0

您可以像这样使用来获取多个不同的列值

(SELECT DISTINCT `enodeb` as res, 
                 "enodeb" as columnname 
 FROM `raw_metrics`) 
UNION
(SELECT DISTINCT `interval` as res, 
       "interval" as columnname 
 FROM `raw_metrics`)
于 2015-07-08T13:49:26.477 回答