将输出行插入表中的方法?

时间:2012-12-19 19:16:35

标签: sql insert

我只是想知道是否有办法 先前的query。我不知道我是否正确解释,所以让我试着告诉你

下面是一个简单的外部联接,它显示EMPHIREINFO表中缺少的内容:

Select b.empno, b.empstate, c.startdt, c.enddt, c.cntrlgth
From EMPADDRESS b Left Outer Join EMPHIREINFO c
On b.empno = c.empno
Order By startdt

输出:

EMPNO   EMPSTATE    STARTDT     ENDDT       CNTRLGTH
9873    NY          20-MAY-11   20-NOV-11   6
7566    CA          15-OCT-11   15-OCT-12   12
7499    MN          31-OCT-11   30-APR-12   6
7369    NJ          15-JAN-12   15-JAN-13   12
5300    NY          11-AUG-12   11-AUG-13   12
7521    NJ          12-NOV-12   12-MAY-13   6
4600    NY          10-DEC-12   10-JUN-13   6
7902    CA          
7934    NY          
7900    MN          

所有空白点都是(null),我猜你知道这些空洞,但是想要提及。无论如何,我想知道是否有办法根据此输出EMPNOEMPSTATEEMPADDRESS插入<{em}}到EMPHIREINFO。我知道我可以手动执行插入声明,但我正在考虑一下我不处理有10行但数千行的的情况。 。

我在来这里之前做了一些研究,但谷歌甚至在这个网站上搜索都让我空手而归。像往常一样,任何帮助都受到欢迎。

2 个答案:

答案 0 :(得分:2)

SQL允许您使用表单

插入表中
insert into table1
select ...

只要列号和类型对齐。如果他们不这样做,您可以指定插入列,例如

insert into table1 (col1, col5, col2)
select ...

所以,对你而言(假设列类型对齐):

insert into EMPHIREINFO 
Select b.empno, b.empstate, c.startdt, c.enddt, c.cntrlgth
From EMPADDRESS b Left Outer Join EMPHIREINFO c
On b.empno = c.empno
Order By startdt

您可能需要指定列,例如,如果您有自动增量id列(这是常见的)

答案 1 :(得分:1)

INSERT destination_table (column1, column2,column3)
SELECT a.column1, a.column2, b.column3
FROM source_table_a AS a
INNER JOIN source_table_b AS b ON (a.key1 = b.key1)

您可以将此INSERT语法与生成结果集的其他命令一起使用:

INSERT destination_table (column1, column2,column3)
EXEC usp_produce_some_output