如何加入同一个表的不同列?

时间:2011-08-15 09:47:40

标签: sql sql-server

假设我有一个包含两列的表,Country和City。

国家

USA
Canada
UK

城市

NY
London

我想加入/合并两个列记录,并希望输出像这样 -

USA
Canada
UK
NY
London

那么,合并同一个表的不同列记录的SQL查询是什么?

2 个答案:

答案 0 :(得分:5)

SELECT Country FROM TABLE
UNION
SELECT City FROM Table

应该这样做。

答案 1 :(得分:3)

回应评论“我正在寻找任何快捷方式。因为如果我需要合并10列,那么我必须写10个联盟!还有其他方法吗?”:

您可以使用unpivot,这意味着您只需要将列名添加到列表中。但是,唯一要注意的是数据类型。例如:

--CTE for example only
;WITH CTE_Locations as (
    select Country = convert(varchar(50),'USA'), City = convert(varchar(50),'NY')
    union select Country = 'Canada', City = 'Vancouver'
    union select Country = 'UK', City = 'Manchester'
)
--Select a list of values from all columns
select distinct
    Place
from
    CTE_Locations l
    unpivot (Place for PlaceType in ([Country],[City])) u