Mysql 如果用户名不存在,则插入SQL

Mysql 如果用户名不存在,则插入SQL,mysql,sql,Mysql,Sql,此查询有什么问题: INSERT INTO `customers`(`username`, `password`) VALUES (:username, :password) WHERE NOT EXISTS ( SELECT `username` FROM `customers` WHERE `username`=:username ); 这个问题怎么了?它会生成一个语法错误 如果要防止

此查询有什么问题:

INSERT INTO `customers`(`username`, `password`) 
            VALUES (:username, :password)
            WHERE NOT EXISTS (
                SELECT `username` FROM `customers` WHERE `username`=:username
            );

这个问题怎么了?它会生成一个语法错误

如果要防止重复,请在表上使用唯一约束:

ALTER TABLE customers ADD CONSTRAINT unq_customers_username UNIQUE (username);
然后,如果尝试使用插入重复值

INSERT INTO `customers`(`username`, `password`) 
     VALUES (:username, :password);
您将得到一个违反约束的错误

在这种情况下,通常需要实际更新现有行中的密码。您可以在重复密钥更新时使用MySQL扩展:


你的数据库是什么?Oracle或SQLServer还是?你不应该告诉我们它有什么问题吗。。。?当你运行它时会发生什么?为什么这是错误的?应该怎么办?
INSERT INTO `customers`(`username`, `password`) 
     VALUES (:username, :password)
     ON DUPLICATE KEY UPDATE password = :password;