合并行条件和表合并的SQL脚本

合并行条件和表合并的SQL脚本,sql,ms-access,ms-access-2007,Sql,Ms Access,Ms Access 2007,我有以下SQL代码来执行清理任务: 从满足条件的表中选择前n行,并将其放入新表中。请注意,[source].var='1'对于不同的表是不同的 SELECT TOP n * INTO tablen FROM source WHERE [source].var='1'; # concrete example SELECT TOP n * INTO table1 FROM source WHERE [source].var1='1'; SELECT TOP n * INTO table2 FR

我有以下SQL代码来执行清理任务:

从满足条件的表中选择前n行,并将其放入新表中。请注意,[source].var='1'对于不同的表是不同的

SELECT TOP n * INTO tablen
FROM source
WHERE [source].var='1';

# concrete example 
SELECT TOP n * INTO table1
FROM source
WHERE [source].var1='1';

SELECT TOP n * INTO table2
FROM source
WHERE [source].var2='1';        

SELECT TOP n * INTO table3
FROM source
WHERE [source].var3='1';

SELECT TOP n * INTO table4
FROM source
WHERE [source].var4='1';

SELECT TOP n * INTO table5
FROM source
WHERE [source].var5='1';
在第一步生成n个表之后,我使用查询将它们连接起来

# code2
SELECT * FROM table1
UNION ALL
SELECT * FROM table2
UNION ALL
SELECT * FROM table3
UNION ALL
SELECT * FROM table4
UNION ALL
SELECT * FROM table5
最后,我将第二个结果放入一个新表中,以便使用它

SELECT * 
INTO dest
FROM code2 

有人知道如何将这些繁琐的任务放到一个SQL查询中,这样我就不必重复15次了吗?

我会尝试回答这个问题,但这是我的第一个答案,所以请放心。首先,我不确定每个顶行查询的源表是否相同。如果是,那么你不需要桌子,1-5。当然,除非你出于某种原因想要5张临时表……我想你知道你在用UNION ALL做什么

只需内联查询原始表:

 select a.* into dest
 from (select TOP n *
       from source
       where source.var1='1'
       UNION ALL
       select TOP n *
       from source
       where source.var2='1'
       UNION ALL
       select TOP n *
       from source
       where source.var3='1'
       UNION ALL
       select TOP n *
       from source
       where source.var4='1'
       UNION ALL
       select TOP n *
       from source
       where source.var5='1'
      ) a

你想对这些任务做些什么?只是想从一个有单独标准的表格中得到前n行,然后再把它们放在一起。祝你新年快乐@riverdog!这是一流的!