我习惯在sql server
中这样做IF (SELECT COUNT(*) FROM table WHERE column1=@value1) = 0
INSERT INTO table(column1, column2, column3) VALUES(@value1, @value2, @value3)
但我无法让它在MySql中运行。请帮助:)
----------------编辑------------------
我认为不应该有太多的大惊小怪或魔法。
If an e-mail does not exist in a table then insert several values into that table.
就是这样。最好是一个衬垫,嵌入编程代码中。
答案 0 :(得分:6)
另一种方法是使用INSERT IGNORE
语句。假设column1
只应包含唯一值,您可以在字段上添加UNIQUE KEY
约束(如果它不是您的主键):
ALTER TABLE table ADD UNIQUE KEY column1 (column1)
然后你可以这样写你的查询:
INSERT IGNORE INTO table(column1, column2, column3) VALUES(@value1, @value2, @value3)
或者如果您想自动更新其他字段,请使用ON DUPLICATE KEY UPDATE
:
INSERT INTO table(column1, column2, column3) VALUES(@value1, @value2, @value3)
ON DUPLICATE KEY UPDATE column2 = @value2, column3 = @value3
让数据库使用唯一键自动处理它有几个好处:
注意:唯一键也可能跨越多行。愚蠢的例子:“ip”和“port”的组合可以组合成唯一标识符“connection”。
答案 1 :(得分:0)
你也可以这样做:
Declare @count INT;
SET @count = (SELECT COUNT(*) FROM table WHERE column1=@value1);
IF (@count = 0)
INSERT INTO table(column1, column2, column3) VALUES(@value1, @value2, @value3)