[英]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;
試試這個 -
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.