A表和B表结构是一样的,但是如下语句出错,多谢高人指点!
INSERT INTO A
SELECT * FROM B WHERE ...

解决方案 »

  1.   

    A表是不是有自增字段,是不是有主键,是不是A,B表中字段顺序一致?
      

  2.   

    ----有自增列的话 这样
    set identity_insert   tablename on
    INSERT INTO A 
    SELECT * FROM B WHERE ... 
    set identity_insert   tablename  off
      

  3.   

    INSERT INTO A(字段1,字段2)
    SELECT (字段1,字段2) FROM B WHERE ... 
      

  4.   

    伺服器: 訊息 8101,層級 16,狀態 1,行 1
    位於資料表 'wpwlxx' 的識別資料行其外顯值只有當使用了資料行清單且 IDENTITY_INSERT 為 ON 時才能指定。
      

  5.   

    这个表是那里来的!AB表有自增列吗
    SET IDENTITY_INSERT a on 这样试下
      

  6.   

    謝謝小f我使用了   set identity_insert tablename on 還是有上面的提示出現,謝謝大家
      

  7.   


    set identity_insert   tablename on
    INSERT INTO A (字段名要列举出来。如 :col1,col2)
    SELECT * FROM B WHERE ... 
    set identity_insert   tablename  off
      

  8.   

    伺服器: 訊息 545,層級 16,狀態 1,行 2
    當 IDENTITY_INSERT 設為 ON 時,必須為資料表 'a' 的識別資料行指定外顯值。
      

  9.   

    设了on时,要用insert into table(fields...)values(value...)句式
      

  10.   

    set identity_insert   tablename on
    INSERT INTO A (字段1,字段2....,字段N) -- 把你A表的字段依次列出来 就OK拉
    SELECT * FROM B WHERE ... 
    set identity_insert   tablename  off
      

  11.   

    插入时用指定列名代替*,指定列名中不要包含自增列和计算列
    INSERT INTO TB2(COL1,COL2,COL3)
    SELECT COL1,COL2,COL3 FROM TB1
    如果列很多的话可以用动态语句生成
      

  12.   

    IF OBJECT_ID('TB1') IS NOT NULL DROP TABLE TB1
    IF OBJECT_ID('TB2') IS NOT NULL DROP TABLE TB2
    GO
    CREATE TABLE TB1(COL1 INT,COL2 INT,COL3 INT,COL4 INT,COL5 INT)
    CREATE TABLE TB2(COL1 INT,COL2 INT,COL3 INT,COL4 INT,COL5 INT)
    INSERT INTO TB1
    SELECT 1,2,3,4,5
    DECLARE @NAME1 VARCHAR(500),@NAME2 VARCHAR(500)
    SELECT @NAME1='TB2' --目标表
    SELECT @NAME2='TB1' --原表
    DECLARE @SQL VARCHAR(8000)
    SELECT @SQL=ISNULL(@SQL+',','')+[NAME]
    FROM SYSCOLUMNS WHERE ID=OBJECT_ID(@NAME1)
    SELECT @SQL='INSERT INTO '+@NAME1+'('+@SQL+') 
    SELECT '+@SQL+' FROM '+@NAME2
    SELECT @SQL
    --生成的语句
    --在这里把自增列去掉
    /*
    ------------------------------------------------------
    INSERT INTO TB1(COL1,COL2,COL3,COL4,COL5) 
    SELECT COL1,COL2,COL3,COL4,COL5 FROM TB2
    */
    EXEC(@SQL)SELECT * FROM TB2
    --执行结果
    /*
    1           2           3           4           5
    */
      

  13.   

    --作用:提取表中的各个字段
    DECLARE @TB_NAME VARCHAR(200),@COL VARCHAR(500)
    SET @TB_NAME='tb_test2'  --要查询的表名
    SELECT @COL=ISNULL(@COL+',','')+[NAME] FROM SYSCOLUMNS WHERE ID=OBJECT_ID(@TB_NAME)
    Print '表  名:     '+@TB_NAME
    Print '字段名:     '+@COL
      

  14.   

    如果可以的話  把表刪掉重新建一個
     
    我今天也碰到了這個問題發現出錯原因為:從控件中帶出的表信息沒有的刷新如:修改前 id :主鍵+int
        修改後 id:varchar(20)
        結果用控件帶出的id信息:主鍵+int