簡體   English   中英

從表中的兩列中僅選擇不同的值

[英]Select only distinct values from two columns from a table

如果我有一張桌子如

1 A

1 B

1 A

1 B

2 C

2 C

我想從兩列中選擇不同的,以便我得到

1 

2 

A

B

C

我該如何說出我的查詢? 是連接列並將它們包裝在不同的函數運算符周圍的唯一方法嗎?

您可以使用union來創建兩個列中所有值的表:

select  col1 as BothColumns
from    YourTable
union
select  col2
from    YourTable

union all不同, union會刪除重復項,即使它們來自union的同一側。

請試試:

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;

SQL小提琴

為什么甚至在聯盟中有所區別,試試這個

select cast(id  as char(1)) from test
union
select val from test

試試這個 -

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

因為您想要選擇的是在不同的列中,您可以使用如下所示的union

select distinct tarCol from  
(select distinct column1 as tarCol from table
 union 
select distinct column2 from table) as tarTab

您可以像這樣使用以獲取多個不同的列值

(SELECT DISTINCT `enodeb` as res, 
                 "enodeb" as columnname 
 FROM `raw_metrics`) 
UNION
(SELECT DISTINCT `interval` as res, 
       "interval" as columnname 
 FROM `raw_metrics`)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM