使用来自其他2个表的数据插入表中

时间:2014-04-07 01:15:32

标签: mysql sql-insert

好的,我有3张桌子; enduserdevicemap,enduser和device。

我正在插入enduserdevicemap,但我需要来自enduser表和设备表的信息。

insert into enduserdevicemap (fkenduser,fkdevice,defaultprofile,tkuserassociation) 
select enduser.pkid,device.pkid from enduser,device 
where enduser.userid = 1001, device.name like '%6%' 
values (enduser.pkid,device.pkid,'f','1')

我需要获取device.pkid和enduser.pkid但是我一直遇到语法错误。我知道这在很多方面都是错的......

2 个答案:

答案 0 :(得分:0)

首先,INSERT的属性数应该与SELECT的属性数相匹配。

其次,您不需要最后一个values

第三,你确定你没有错过表之间的关系:enduser和device,因为这将插入所有可能性。

示例,(对于属性的选择可能没有意义,但这只是如何使用另一个表中的插入的示例):

INSERT INTO enduserdevicemap (fkenduser,fkdevice,defaultprofile,tkuserassociation) 
SELECT e.fkenduser,e.fkdevice,d.defaultprofile,d.tkuserassociation
FROM enduser e,device d 
WHERE enduser.userid = 1001 AND device.name like '%6%' 

答案 1 :(得分:0)

你不能同时拥有选择和值。它是一个或另一个。 我会做以下事情 插入到enduserdevicemap(fkenduser,fkdevice,defaultprofile,tkuserassociation) 从enduser,device中选择enduser.pkid,device.pkid,'f','1' 其中enduser.userid = 1001,device.name如'%6%'

并不是select中的2个表没有连接, 导致笛卡儿。