Sql 提取和偏移后的并集选择

Sql 提取和偏移后的并集选择,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有以下存储过程: @offset INT, @fetch INT SELECT col1 AS col FROM tab1 UNION SELECT col1 FROM tab2 ORDER BY col OFFSET @offset ROWS FETCH NEXT @fetch ROWS ONLY 现在,我想在执行偏移量和提取之后,添加第三个表作为UNION。可能吗 UNION SELECT TOP 1 col1 FROM tab3 ORDER BY NEWID() 使用派生表 Se

我有以下存储过程:

@offset INT,
@fetch INT

SELECT col1 AS col FROM tab1
UNION
SELECT col1 FROM tab2
ORDER BY col OFFSET @offset ROWS FETCH NEXT @fetch ROWS ONLY
现在,我想在执行偏移量和提取之后,添加第三个表作为UNION。可能吗

UNION
SELECT TOP 1 col1 FROM tab3
ORDER BY NEWID() 
使用派生表

Select col from
(
SELECT col1 AS col FROM tab1
UNION
SELECT col1 FROM tab2
ORDER BY col OFFSET @offset ROWS FETCH NEXT @fetch ROWS ONLY
) a
UNION
SELECT TOP 1 col1 FROM tab3
ORDER BY NEWID() 
注意:如果您不想删除结果中的重复项,则可以将
UNION
替换为
UNION ALL

使用派生表

Select col from
(
SELECT col1 AS col FROM tab1
UNION
SELECT col1 FROM tab2
ORDER BY col OFFSET @offset ROWS FETCH NEXT @fetch ROWS ONLY
) a
UNION
SELECT TOP 1 col1 FROM tab3
ORDER BY NEWID() 
@offset INT,
@fetch INT

WITH CTE1
AS
(SELECT TOP 100 PERCENT col1 AS col FROM tab1
UNION
SELECT TOP 100 PERCENT col1 FROM tab2
ORDER BY col OFFSET @offset ROWS FETCH NEXT @fetch ROWS ONLY)

SELECT * FROM CTE1
UNION
SELECT TOP 1 col1 FROM tab3
ORDER BY NEWID() 
注意:如果您不想删除结果中的重复项,则可以将
UNION
替换为
UNION ALL

@offset INT,
@fetch INT

WITH CTE1
AS
(SELECT TOP 100 PERCENT col1 AS col FROM tab1
UNION
SELECT TOP 100 PERCENT col1 FROM tab2
ORDER BY col OFFSET @offset ROWS FETCH NEXT @fetch ROWS ONLY)

SELECT * FROM CTE1
UNION
SELECT TOP 1 col1 FROM tab3
ORDER BY NEWID()