mysql - 仅当记录不存在时插入表

标签 mysql

仅当用户的电子邮件不存在时,我才尝试将用户插入用户表中。

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

http://sqlfiddle.com/#!2/792d4/2

关于mysql - 仅当记录不存在时插入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390918/

相关文章:

MySQL MATCH() AGAINST() 与 REGEXP 匹配整个单词

php - 在 RDBMS 中将 ids 存储为逗号分隔的字符串是否有任何性能原因?

mysql数据库如何存储联系人数据

MySQL LAST_INSERT_ID() 与 INSERT INTO 表 SELECT FROM 表

php - 从其他表中选择对应的行

php - mysql查询中的奇怪错误

javascript - 在 php 页面上如何使用 mysql 在第 n 行之后插入行

java - 使用hibernate和java进行Mysql查询时出错

java - com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException : Can't call rollback when autocommit=true

php - 通过 jquery ajax 更新评论时重复帖子条目