select 语句出错 A表和B表结构是一样的,但是如下语句出错,多谢高人指点!INSERT INTO ASELECT * FROM B WHERE ... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 A表是不是有自增字段,是不是有主键,是不是A,B表中字段顺序一致? ----有自增列的话 这样set identity_insert tablename onINSERT INTO A SELECT * FROM B WHERE ... set identity_insert tablename off INSERT INTO A(字段1,字段2)SELECT (字段1,字段2) FROM B WHERE ... 伺服器: 訊息 8101,層級 16,狀態 1,行 1位於資料表 'wpwlxx' 的識別資料行其外顯值只有當使用了資料行清單且 IDENTITY_INSERT 為 ON 時才能指定。 这个表是那里来的!AB表有自增列吗SET IDENTITY_INSERT a on 这样试下 謝謝小f我使用了 set identity_insert tablename on 還是有上面的提示出現,謝謝大家 set identity_insert tablename onINSERT INTO A (字段名要列举出来。如 :col1,col2)SELECT * FROM B WHERE ... set identity_insert tablename off 伺服器: 訊息 545,層級 16,狀態 1,行 2當 IDENTITY_INSERT 設為 ON 時,必須為資料表 'a' 的識別資料行指定外顯值。 设了on时,要用insert into table(fields...)values(value...)句式 set identity_insert tablename onINSERT INTO A (字段1,字段2....,字段N) -- 把你A表的字段依次列出来 就OK拉SELECT * FROM B WHERE ... set identity_insert tablename off 插入时用指定列名代替*,指定列名中不要包含自增列和计算列INSERT INTO TB2(COL1,COL2,COL3)SELECT COL1,COL2,COL3 FROM TB1如果列很多的话可以用动态语句生成 IF OBJECT_ID('TB1') IS NOT NULL DROP TABLE TB1IF OBJECT_ID('TB2') IS NOT NULL DROP TABLE TB2GOCREATE 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 TB1SELECT 1,2,3,4,5DECLARE @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 '+@NAME2SELECT @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*/ --作用:提取表中的各个字段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_NAMEPrint '字段名: '+@COL 如果可以的話 把表刪掉重新建一個 我今天也碰到了這個問題發現出錯原因為:從控件中帶出的表信息沒有的刷新如:修改前 id :主鍵+int 修改後 id:varchar(20) 結果用控件帶出的id信息:主鍵+int 求SQL语句 急啊!!! 如何取得表后面的10条记录 组合字段的触发器,高手请进 求助~~查询公交车线路的算法 寻求sql视图更多的参考资料 请教一个SQL建表的小问题?? SQL,SQL,SQL 数据库不认识 COLLATE 关键字啦.怎么回事啊? 进销存系统 我想学习SQLSERVER2000,请问需要什么基础? 如何查询字段的UTF8编码的长度 MSSQL2000 动态仓库库存格式转换
set identity_insert tablename on
INSERT INTO A
SELECT * FROM B WHERE ...
set identity_insert tablename off
SELECT (字段1,字段2) FROM B WHERE ...
位於資料表 'wpwlxx' 的識別資料行其外顯值只有當使用了資料行清單且 IDENTITY_INSERT 為 ON 時才能指定。
SET IDENTITY_INSERT a on 这样试下
set identity_insert tablename on
INSERT INTO A (字段名要列举出来。如 :col1,col2)
SELECT * FROM B WHERE ...
set identity_insert tablename off
當 IDENTITY_INSERT 設為 ON 時,必須為資料表 'a' 的識別資料行指定外顯值。
INSERT INTO A (字段1,字段2....,字段N) -- 把你A表的字段依次列出来 就OK拉
SELECT * FROM B WHERE ...
set identity_insert tablename off
INSERT INTO TB2(COL1,COL2,COL3)
SELECT COL1,COL2,COL3 FROM 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
*/
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
我今天也碰到了這個問題發現出錯原因為:從控件中帶出的表信息沒有的刷新如:修改前 id :主鍵+int
修改後 id:varchar(20)
結果用控件帶出的id信息:主鍵+int