将insert / select语句合并为一个? MySQL的

时间:2010-10-20 11:31:35

标签: mysql

有没有办法将这个陈述合而为一?基本思想是插入标记名称(如果它不存在)并检索下一个语句的主键。标题栏是唯一的。

INSERT INTO `tag_name` (`count`, `title`) 
SELECT 0, @title FROM DUAL 
WHERE not exists 
    (SELECT * FROM `tag_name` WHERE `title` = @title LIMIT 1);

如果行影响> 0则使用last_insert_rowid(),否则运行此语句

SELECT id from  FROM `tag_name` WHERE `title` = @title

---这是一个测试

CREATE TABLE test (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, data int unique);
//insert into test(data) select 5;

2 个答案:

答案 0 :(得分:-1)

您可以使用

insert into ... on duplicate update 

这是插入行,当密钥重复时,请更新它。否则你可以使用:

insert into on duplicate update field1=field1

这将在重复时忽略!

答案 1 :(得分:-2)

您可以使用MySql特定的Replace语法。查看here了解详情。