比方说:
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。
尝试这个:
SELECT * FROM (SELECT Item.Id FROM Item ...
UNION ALL
SELECT Item.ParentId FROM Item ...)
Run Code Online (Sandbox Code Playgroud)