sql - 将两个表与第一个表中的条件进行 UNION

标签 sql sql-server

我在同一个表 [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/

相关文章:

php - 在 SQL 中多次选择一个值

mysql - 仅从数据库中选择那些先前未选择的值

mysql - 显示一个表中没有另一个 ID 号的值

sql - 使用 SQL 查询从包含表列的 Json 对象获取值

java - 是自由号 : sqljdbc driver not configured for integrated authentication

sql-server - sp_columns typename/data_type 与表设计器 : ntext vs nvarchar(MAX)

php - MySQL 选择异常

MySQL - 查询以获得特定结果

sql - SQL 查询中的变量