2011-04-05 77 views
1

如果表中没有包含给定值的其他行,我已经通过几十个论坛搜索了MySql语法以插入一行。mysql条件插入?

我知道那一定是简单的,但到目前为止还没有发现什么,做什么,我需要......

我的要求很简单:

if not exists (select * from table1 where int_value2 = 123) then insert into table1 (value1, int_value2, value3) values ('a', 1, 'a');

我对我多么简单知道道歉这将是,但提前感谢您可以提供任何帮助。

回答

2

定义一个唯一的约束,如果它不是已经存在:

ALTER TABLE table1 ADD UNIQUE(int_value2); 

INSERT IGNORE INTO table1 (value1, int_value2, value3) VALUES ('a', 1, 'a'); 

注意“IGNORE`位。

如果您需要value1/value3中的“新鲜”数据,您可以查看ON DUPLICATE KEY UPDATE

INSERT INTO table1 (value1, int_value2, value3) 
SELECT 'a', 1, 'a' FROM DUAL 
WHERE NOT EXISTS(SELECT * FROM table1 WHERE int_value2=123); 
+0

在示例伪查询中检查的int_value2与插入的int_value2不同。 – 2011-04-05 23:31:36

+0

阿格,错过了... – Wrikken 2011-04-05 23:32:09

+0

真棒谢谢你!我有几个变种的那个查询,但那个作品完美...很感激。 – travega 2011-04-06 02:20:01