1

昨天我问了这个问题:如果在 mysql insert 语句中,答案非常好。问题是如果值不存在,我需要在表中插入一行。铁

 If('x' NOT EXIXTS in (select campoX from table) then
 insert into table (...) values (...) etc.

我能怎么做?在互联网上我找不到答案:(

4

4 回答 4

1

我假设您的表名为 tbl。

INSERT INTO tbl (campoX ) 
    SELECT 'X' FROM DUAL 
    WHERE NOT EXISTS( 
                      SELECT campoX from tbl 
                      WHERE campoX ='X'
                     );

DUAL纯粹是为了方便那些要求所有 SELECT 语句都应该有 FROM 和可能的其他子句的人。MySQL 可能会忽略这些子句。如果没有引用表,MySQL 不需要 FROM DUAL。

正如其他一些提到的,INSERT IGNORE如果您的 campoX 是唯一或主键字段,您可以在此处使用语句。

于 2013-02-20T12:18:28.467 回答
1

使用双表:

INSERT INTO campoX (col1, col2, col3)
SELECT value1, value2, value3
FROM dual
WHERE NOT EXISTS(SELECT * 
                 FROM campoX 
                 WHERE col1=value1);
于 2013-02-20T12:41:55.507 回答
0

关于什么:

CASE 
    WHEN 'X' NOT EXIST IN (SELECT campoX FROM yourTable) THEN 
    INSERT INTO yourTable (...) VALUES (...) 
END CASE
于 2013-02-20T12:21:18.770 回答
0

发明你的编程语言并不是描述你的问题的最合适的方式。

你的意思是你只想添加一个数据在数据库中不存在的行吗?如果是这样,请确保您已在表上定义了主键或唯一键并无论如何都执行 INSERT - 但忽略重复键错误。实际上,使用 MySQL,您可以使用“INSERT IGNORE....”完全抑制重复键的错误生成。

于 2013-02-20T12:32:24.853 回答