仅当用户的电子邮件不存在时,我才尝试将用户插入用户表中。
CREATE TABLE `users` (
`ID` INT(8) NOT NULL AUTO_INCREMENT ,
`FIRSTNAME` VARCHAR(150) NOT NULL ,
`LASTNAME` VARCHAR(150) NOT NULL ,
`EMAIL` VARCHAR(150) NOT NULL ,
`PASSWORD` VARCHAR(150) NOT NULL ,
PRIMARY KEY (`ID`(8)),
UNIQUE (`EMAIL`)
) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_bin;
我正在运行这个查询:
SET @P1 = 'john';
SET @P2 = 'smith';
SET @P3 = 'whatever@example.com';
SET @P4 = 'password';
我有 USERS_INSERT_NEW 是一个存储过程,它只是插入到 users
表中
SELECT IF ( NOT EXISTS ( SELECT `ID` FROM `users` WHERE `EMAIL` = 'whatever@example.com' ), CALL USERS_INSERT_NEW ( @P1, @P2, @P3, @P4 ) , NULL ) INSERTED
IF 语句的工作原理如下: IF(表达式,有效,无效)为什么我不能使用我的存储过程(如果它有效)?
最佳答案
更简单的方法是
INSERT INTO table_a
SELECT b.*
FROM table_b b
LEFT JOIN table_a a
ON a.ID = b.ID
WHERE a.ID IS NULL
关于mysql - 仅当记录不存在时插入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390918/