从SQL Server中插入选择

时间:2017-04-04 10:38:39

标签: sql sql-server sql-server-2008

在table1中是table2对面的一些变化。我需要只使用table2中与table2相对的值缺少table3。

表1

Column1
a
b

d
e

g
h
i

表2

Column1
a
b
c
d
e
f

代码:

INSERT INTO [dbo].[table3]
    SELECT *
    FROM [dbo].[table2]
    WHERE NOT EXISTS (SELECT *
                      FROM [dbo].[table1]
                      WHERE [dbo].[table2].column1 = [dbo].[table1].column1 
                        AND [dbo].[table2].column1 = [dbo].[table1].Pernr);

我收到错误:

  

Msg 213,Level 16,State 1,Line 1
  列名或提供的值数与表定义不匹配。

我需要:

表3

Column1
c
f

昨天我的剧本工作但是今天出错......我不知道为什么?

感谢您的意见

3 个答案:

答案 0 :(得分:4)

使用insert时列出列:

INSERT INTO [dbo].[table3](column1)
    SELECT t2.column1
    FROM [dbo].[table2] t2
    WHERE NOT EXISTS (SELECT 1
                      FROM [dbo].[table1] t1
                      WHERE t2.column1 = t1.column1
                     );

当然,插入可以有多个列。只需在insertselect中列出所有这些内容。

我不知道Pernr是什么。这不是你问题的一部分。当然,您可以在子查询中为WHERE子句添加其他子句。

如果table3不存在,请使用select into而不是insert

    SELECT t2.*
    INTO table3
    FROM [dbo].[table2] t2
    WHERE NOT EXISTS (SELECT 1
                      FROM [dbo].[table1] t1
                      WHERE t2.column1 = t1.column1
                     );

答案 1 :(得分:1)

DECLARE @Table1 TABLE (Column1 VARCHAR(2))
INSERT INTO @Table1  VALUES ('a'),('b'),('d'),('e'),('g'),('h'),('i')

DECLARE @Table2 TABLE (Column1 VARCHAR(2))
INSERT INTO @Table2  VALUES ('a'),('b'),('c'),('d'),('e'),('f')


DECLARE @Table3 TABLE (Column1 VARCHAR(2))
INSERT INTO @Table3 
SELECT 
*
FROM  @Table2 T2
WHERE T2.Column1 NOT IN
(SELECT Column1 FROM @Table1)

SELECT
* 
FROM @Table3 

答案 2 :(得分:1)

你可以只使用"而不是" - 子查询如下

select * into #yourTable3 from #yourtable2 
    where column1 not in (select column1 from #yourtable1 where column1 is not null)

你的桌子:

create table #yourtable1 (column1 varchar(10) )
insert into #yourtable1 (
Column1 ) values
 ('a')
,('b')
,(null )
,('d')
,('e')
, ( null )
,('g')
,('h')
,('i')

create table #yourtable2 (column1 varchar(10))
insert into #yourtable2 (column1 ) values
 ('a')
,('b')
,('c')
,('d')
,('e')
,('f')