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()