我在同一个表 [MyTable]
上有一个联合,因此我可以选择某些值作为前 5 个值,我在此处排除其逻辑以简化问题(我希望):
我将第一个表别名为 tbl1
- 我可以在 UNION 语句之后以某种方式引用此别名,以便我可以从中排除结果吗?
我尝试了这样的操作,但它无法识别tbl1
SELECT top 5 tbl1.Id, tbl1.Description, 'first'
FROM (
-- query [MyTable] joined with others to get particular result set
) as tbl1
UNION
SELECT tbl2.Id, tbl2.Description, 'second'
FROM [MyTable] as tbl2 WHERE tbl2.Id NOT IN
(SELECT Id FROM tbl1)
或者我是否只需要在第二部分重做第一个查询才能排除这些 Id?
我为此使用 SQL Server 2012。
最佳答案
您还可以根据您的要求使用临时表来实现相同目的。查看差异here .
SELECT TOP 5 tbl1.Id, tbl1.Description, 'first' INTO #tbl1
FROM (
-- query [MyTable] joined with others to get particular result set
)
SELECT * FROM #tbl1
UNION ALL
SELECT tbl2.Id, tbl2.Description, 'second'
FROM [MyTable] AS tbl2
WHERE tbl2.Id NOT IN (SELECT Id FROM #tbl1)
关于sql - 将两个表与第一个表中的条件进行 UNION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61540433/