Jes*_*per 3 mysql database if-statement subquery
我习惯在sql server中这样做
IF (SELECT COUNT(*) FROM table WHERE column1=@value1) = 0
INSERT INTO table(column1, column2, column3) VALUES(@value1, @value2, @value3)
Run Code Online (Sandbox Code Playgroud)
但我无法真正让它在MySql中工作.请帮忙 :)
----------------编辑------------------
我想,不应该有太多的大惊小怪或魔法.
If an e-mail does not exist in a table then insert several values into that table.
Run Code Online (Sandbox Code Playgroud)
而已.优选地是一个衬垫,嵌入编程代码中.
另一种方法是使用该INSERT IGNORE语句.假设column1应该只保存唯一值,您可以UNIQUE KEY在字段上添加约束(如果它不是您的主键):
ALTER TABLE table ADD UNIQUE KEY column1 (column1)
Run Code Online (Sandbox Code Playgroud)
然后你可以这样写你的查询:
INSERT IGNORE INTO table(column1, column2, column3) VALUES(@value1, @value2, @value3)
Run Code Online (Sandbox Code Playgroud)
或者如果要自动更新其他字段,请使用ON DUPLICATE KEY UPDATE:
INSERT INTO table(column1, column2, column3) VALUES(@value1, @value2, @value3)
ON DUPLICATE KEY UPDATE column2 = @value2, column3 = @value3
Run Code Online (Sandbox Code Playgroud)
让数据库使用唯一键自动处理它有几个好处:
注意:唯一键也可能跨越多行.愚蠢的例子:"ip"和"port"的组合可以组合成唯一标识符"connection".
| 归档时间: |
|
| 查看次数: |
8033 次 |
| 最近记录: |