昨天我问了这个问题:if in mysql insert statement,答案很有效。 问题是如果值不存在,我需要在表中插入一行。 f.e。
If('x' NOT EXIXTS in (select campoX from table) then
insert into table (...) values (...) etc.
我该怎么办?在互联网上我找不到答案:(
答案 0 :(得分: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。
正如其他人提到的,如果你的campoX是一个unigue或主键字段,你可以在这里使用INSERT IGNORE
语句。
答案 1 :(得分:1)
使用双表:
INSERT INTO campoX (col1, col2, col3)
SELECT value1, value2, value3
FROM dual
WHERE NOT EXISTS(SELECT *
FROM campoX
WHERE col1=value1);
答案 2 :(得分:0)
怎么样:
CASE
WHEN 'X' NOT EXIST IN (SELECT campoX FROM yourTable) THEN
INSERT INTO yourTable (...) VALUES (...)
END CASE
答案 3 :(得分:0)
发明编程语言不是描述问题的最合适方式。
你的意思是你只想添加一个数据库中不存在数据的行吗?如果是这样,那么请确保您已经在表上定义了主键或唯一键并且仍然执行INSERT - 但忽略重复键错误。实际上,使用MySQL,您可以通过使用“INSERT IGNORE ....”来完全抑制错误生成的重复键。