Mysql 在一个表中插入多行,其中column1的外键相同,column2的值不同
我使用myDBR为我的数据库创建报告,我有一个用于一个报告的表单,可以在其中为每个事件添加一个具有多个设计类型的新事件 我有3个表:Events EventID、Event、URL、DesignType DesignTypeID、DesignType和DesignTypeXEvents DesignTypeXEventID、EventID、DesignTypeID “我的表单”中有DesignTypes复选框,这些复选框应将EventID和DesignTypeID插入表DesignTypeXEvents中。但如果我选择了多个设计类型,我会得到一个错误,即子查询返回多行。如果我选择了多个设计类型,是否有办法使EventID复制到其他行中 这是我的密码:Mysql 在一个表中插入多行,其中column1的外键相同,column2的值不同,mysql,insert,foreign-keys,mydbr,Mysql,Insert,Foreign Keys,Mydbr,我使用myDBR为我的数据库创建报告,我有一个用于一个报告的表单,可以在其中为每个事件添加一个具有多个设计类型的新事件 我有3个表:Events EventID、Event、URL、DesignType DesignTypeID、DesignType和DesignTypeXEvents DesignTypeXEventID、EventID、DesignTypeID “我的表单”中有DesignTypes复选框,这些复选框应将EventID和DesignTypeID插入表DesignTypeXEv
CREATE PROCEDURE `sp_DBR_events_create`(
inEvent varchar(70),
inEventURL varchar(70),
inDesignType text
)
BEGIN
INSERT INTO Events (Event, URL)
VALUES (inEvent, inURL);
set @vSQL = concat('insert into DesignTypeXEvents (EventID,
DesignTypeID) values ((SELECT MAX(EventID) FROM Events),
(select DesignTypeID from DesignTypes where DesignTypeID in
(', inDesignType, ')))');
prepare stmt from @vSQL;
execute stmt;
deallocate prepare stmt;
如果我没有包含EventID,这段代码非常有用&将正确的DesignTypeID插入多行,但我当然需要EventID。使用INSERT-into。。。选择而不是插入到。。。价值观
非常感谢。我一直在想为什么它几个小时都不工作。我在代码末尾做了一些小改动,请在您的条目中进行编辑&我接受:交叉连接后,从DesignTypeID in',inDesignType',d'中的DesignTypeID中选择DesignTypeID;
set @vSQL = concat('
INSERT INTO DesignTypeXEvents (EventID, DesignTypeID)
SELECT MaxEvent, DesignTypeID
FROM (SELECT MAX(EventID) MaxEvent FROM Events) m
CROSS JOIN
(SELECT DesignTypeID FROM DesignTypes WHERE DesignTypeID IN (', inDesignType, ')) d');