如果表中没有包含给定值的其他行,我现在已经浏览了几十个论坛,发现MySql语法插入一行。
我知道它必须简单,但到目前为止还没有找到能满足我需要的东西......
我的要求很简单:
if not exists (select * from table1 where int_value2 = 123) then
insert into table1 (value1, int_value2, value3)
values ('a', 1, 'a');
我很抱歉我知道这会是多么简单,但要提前感谢您提供的任何帮助。
答案 0 :(得分:2)
定义UNIQUE约束(如果它尚不存在):
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);