SQL数据库 新表里的数据都从另外两个基本表中获得
发布网友
发布时间:2022-04-11 08:40
我来回答
共7个回答
热心网友
时间:2022-04-11 10:10
好明显你的new_table表中有一字段是自增型的,自增字段是不能自定义填写值的,只能系统按顺序生成。需要自定义插入自增列字段值,可以先把自增限定去掉或者在插入数据的时候在前面 SET IDENTITY_INSERT ON 。不过通过表复制到表数据的,好像使用SET IDENTITY_INSERT ON 报错,那只能先把字段禁用了
热心网友
时间:2022-04-11 11:28
1. 这里面有错误:
INSERT new_table SELECT tab1.*, tab2.* FROM tab1 INNER JOIN tab2 ON tab1.F1=tab1.F3
应该是ON tab1.F1=tab2.F3 吧
2. 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'tb车辆导入保险明细表'中的标识列指定显式值。
这个应该是有 IDENTITY列,所以你最好这么写
INSERT new_table(xx,yy,....) SELECT tab1.axx,ayy,..., tab2.bxx,byy,... FROM tab1 INNER JOIN tab2 ON tab1.F1=tab1.F3
然后注意indentity列。
热心网友
时间:2022-04-11 13:02
不是这个问题,解决办法是你把new_table这个表中的ID自增给去掉,或者不要往new_table里插入ID的值追问取消了自增后
消息 213,级别 16,状态 1,第 1 行
列名或所提供值的数目与表定义不匹配。
是新的什么问题吗
追答这说明你要插入的表的字段和现有的表的字段不一致,字段多了或者少了,比较一下,然后只写你需要插入的字段就行了
热心网友
时间:2022-04-11 14:54
你的问题是语句问题和表结构不匹配
所以你的insert语句必须修改为具体列
insert into new_table(字段1,字段2,字段3....字段n)
select tab1.xx, tab2.xx, xxx. tab2.n
from tab1 inner join tab2 on tab1.F1 = tab2.F3
热心网友
时间:2022-04-11 17:02
这个问题不难啊
第一,INSERT new_table SELECT tab1.*, tab2.* FROM tab1 INNER JOIN tab2 ON tab1.F1=tab1.F3
别用 tab.*和 tab2.*
用字段,那些自增字段不用贴上去,我打个比方吧
a表 id,name,age
b表 id,hobby,address
insert into New_table (a.name,a.age,b.hobby,b.address) from a inner join b on a.id=b.id
values(a.name,a.age,b.hobby,b.address)追问嗯啊 这样可以 就是行数有点不对
因为tab1是tab2的主表 tab2可能2行对应tab1的1行
这样就把inner join 改成left join就好了?
追答这个看你需求,你是要查以主表为主还是副表为主了
如果主表为主,那么 left join
副表为主,那么 right join
热心网友
时间:2022-04-11 19:26
INSERT new_table SELECT tab1.*, tab2.* FROM tab1 INNER JOIN tab2 ON tab1.F1=tab1.F3
ON tab2.F1=tab2.F3追问不是这个小错误
追答发你的连接码就知啦!
热心网友
时间:2022-04-11 22:08
create table tablename as select(这里面的是你需要查询的东西 ) 我认为这样比那个insert要好用