以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQL的 insert into select 语句可以用于加载表吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52510)

--  作者:scott518
--  发布时间:2014/6/17 11:57:00
--  SQL的 insert into select 语句可以用于加载表吗?

insert into MPS计划明细(客户,订单编号,生产单号,层级编码,产品编码,品名,规格,需求日期,需求数量,计量单位,生产数量,工作中心,工序号,工序名称,加工方式,模具编号,设备编号,设备名称,设备型号)
select 客户,订单编号,a.生产单号,a.层级编码,a.产品编码,a.品名,a.规格,a.需求日期,a.需求数量,a.计量单位,a.生产数量,b.工作中心,b.工序号,b.工序名称,b.加工方式,b.模具编号,b.设备编号,b.设备名称,b.设备型号
from MPS计划明细 a inner join 产品工序明细 b on a.产品编码 = b.产品编码
where b.工序号 is not null and 生产单号 is not null and NOT EXISTS (SELECT * FROM MPS计划明细 WHERE 生产单号=a.生产单号 and 产品编码=a.产品编码 and 工序号=b.工序号)

 

上面是存储过程中向表中新增行的语句,红色的是sql数据库中的表,如果想用当前表中的数据直接新增到sql数据库中:

insert into MPS计划明细(XXXX) select xxx from 表A

请问下可以这样用吗?还是只能使用后台数据库中的实际表数据才行。谢谢!

 

 



--  作者:Bin
--  发布时间:2014/6/17 11:59:00
--  
用后台数据库中的实际表数据才行
--  作者:有点甜
--  发布时间:2014/6/17 12:00:00
--  

 不可以直接用表A,sql语句的select,必须是数据的表或者是视图。


--  作者:scott518
--  发布时间:2014/6/17 12:09:00
--  

谢谢,因为如果用sql数据库中的表每次insertinto select 都是用表中所有的数据,担心数据多时是不是很慢,如果能用加载表,如果表中只有200行,那就只需select这200行,所以才有此问,也可能我的想法是错误的。

比如我只想用加载表中新增加的行insertinto到sql数据库表中,加载表中可以判断是新增行,但sql数据库中如何识别行是新增加的?

[此贴子已经被作者于2014-6-17 12:12:17编辑过]

--  作者:jspta
--  发布时间:2014/6/17 14:12:00
--  
用同数据源才行,你把狐表当前表中的数据更新到SQL数据库中是不行的,

但是你保存到数据库后,然后在用存储过程或者其它方法把新增值添加到另一个表是可以使用的。



--  作者:有点甜
--  发布时间:2014/6/17 14:19:00
--  
 回复4楼,不要直接用一条语句,用多条insert into,一个一个值插入表里面呗。