如何在sql表中插入庞大的值?

时间:2013-02-20 11:59:36

标签: sql sql-server tsql

我想从下面的其他数据中添加庞大的数据。但我不能这样做:错误被返回。但是区域与另一个区域相同。

declare @hrmtable1 table(musterino int, ekno smallint)

insert into @hrmtable1 (musterino , ekno)
    select distinct musterino, ekno
    from hareketmuhasebe (nolock) 
    where islemtarihi >= '20120101'
      and isnull(musterino, 0) <> 0 
      and isnull(musterino, 0) > 9000000 
      and isnull(ekno,0) <> 0 

insert into table1(A,B,C,D,E,. . . . .N) 
   SELECT DISTINCT 
      case when ((select count(*) from table1 where musterino=e.musterino) > 0)
           then (select top 1 *
                 from dbo.table1 
                 where musterino = e.musterino  
                 order by ekno desc)
           else 
                (select 100, e.musterino, e.ekno, 0, K, L, M)
                 from @hrmtable1 e )
      end

ERROR:

  

Msg 120,Level 15,State 1,Line 10
  INSERT语句的选择列表包含的项目少于插入列表   SELECT值的数量必须与INSERT列的数量相匹配。

4 个答案:

答案 0 :(得分:0)

编辑:由于您编辑了问题,答案仍然是相同的。 Select语句中的列数与代码第二部分中的insert语句列不匹配。

在您的第一个声明中,您指定的是2列,并且您选择了5列,它们应该匹配,这就是错误告诉您的内容。

insert into @hrmtable1 (musterino , ekno)
                         ^^^^^^^    ^^^^
select distinct musterino,ekno,defterid,dovizcinsi, subekodu
                ^^^^^^^    ^^^   ^^^^     ^^^^^      ^^^^^

从您的insert语句中看起来您不需要Select语句中的最后三列。

答案 1 :(得分:0)

如错误中所述,insert中的列数不会超出您提供的值的数量

insert into @hrmtable1 (musterino , ekno)
select distinct musterino,ekno
from hareketmuhasebe (nolock) 
where islemtarihi >= '20120101'
and isnull(musterino,0) <> 0 and isnull(musterino,0) < 9000000 and isnull(ekno,0) <> 0 

答案 2 :(得分:0)

试试这个:

insert into @hrmtable1 (musterino , ekno)
select distinct musterino,ekno
from hareketmuhasebe (nolock) 
where islemtarihi >= '20120101'
and isnull(musterino,0) <> 0 and isnull(musterino,0) < 9000000 and isnull(ekno,0) <> 0

您在插入&amp;中有2列select子句中的5列,这是错误的原因。

答案 3 :(得分:0)

  

INSERT语句的选择列表包含的项目数少于   插入列表。 SELECT值的数量必须与数量匹配   INSERT列。

错误本身会告诉您错误的错误。 insert语句中的列数少于select语句的列数。

来自 MSDN

  

子查询的选择列表必须与列的列表列表匹配   INSERT语句。如果未指定列列表,则必须使用选择列表   匹配要插入的表或视图中的列。

详细了解Inert into