我是Mysql的新手。我有一个存储过程,下面是我的SP
CREATE DEFINER=`root`@`localhost` PROCEDURE `insertGroup`(IN startdate date,
IN enddate date,
IN amount int,
IN groupname char(50))
BEGIN
DECLARE c_id INT;
set c_id =(select id from c_begin where startdate = startdate and enddate = enddate and amount = amount);
insert into c_group (c_beginid,Groupname)
select * from (select c_id,groupname) as temp
where not exists (
select c_beginid,groupname from c_group where c_beginid = c_id and groupname = groupname
) ;
END
我称之为
call insertGroup ('2014-01-01','2015-12-31',100000,'GroupD');
但它没有插入任何行。我想插入" c_group"如果c_beginid和groupname不存在。
但是当我尝试下面的时候
insert into c_group (c_beginid,Groupname)
select * from (select 1,'GroupD') as temp
where not exists (
select c_beginid,groupname from c_group where c_beginid = 1 and groupname = 'GroupD'
) limit 1 ;
它正在运作。
那么我的" insertGroup"出了什么问题? SP。谁能帮我 ?
谢谢,
答案 0 :(得分:2)
重命名输入参数,以便在表示参数和列名称时向数据库引擎清除。
where startdate = startdate and enddate = enddate and amount = amount
始终为true,因为引擎认为您将列与自身进行比较。