一个 SELECT 中的 UNION 列

Tom*_*ski 1 sql sql-server

比方说:

SELECT Item.Id, Item.ParentId FROM Item ..." 
Run Code Online (Sandbox Code Playgroud)

返回给我这个数据:

Id |  ParentId
----------------
1  | NULL
2  | 17
3  | 13
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以通过使用某种UNION但仅来自一个列的列来获取这些数据作为一列SELECT?就像是:

SELECT (Item.Id UNION Item.ParentId) AS Id FROM Item...
Run Code Online (Sandbox Code Playgroud)

结果 :

Id |
----
1  | 
2  |
3  |
NULL
17 |
13 |
Run Code Online (Sandbox Code Playgroud)

编辑示例:

我有媒体表:

Id |  ParentId
----------------
1  | NULL
2  | 1
3  | 2
Run Code Online (Sandbox Code Playgroud)

它与自身有关系,这是某种三级树结构(系列 -> 季节 -> 剧集)

还有另一个表格优惠,其中包含有关可用性的信息:

Id |  MediaId  | Availability
------------------------------
1  | 3         | true
Run Code Online (Sandbox Code Playgroud)

我需要获取所有可用媒体的 ID,以及所有级别的所有家长的 ID。

我在想:

SELECT Media.Id, MediaSeason.Id, MediaSeries.Id  FROM Media
LEFT JOIN Media AS MediaSeason ON MediaSeason.Id = Media.ParentId
LEFT JOIN Media AS MediaSeries ON MediaSeries.Id = MediaSeason.ParentId 
LEFT JOIN Offer ON Offer.MediaId = Media.Id
WHERE Offer.Availability = true
Run Code Online (Sandbox Code Playgroud)

这为我提供了我需要的所有 id,但在三个不同的列中,我试图找到一种方法将其放入一个列中,而无需在 3 个不同的 SELECT 中重复连接和登录。

我正在使用 MSSQL。

Mla*_*enB 5

尝试这个:

 SELECT * FROM (SELECT Item.Id FROM Item ...
    UNION ALL
    SELECT Item.ParentId FROM Item ...)
Run Code Online (Sandbox Code Playgroud)