昨天我问了这个问题:if in mysql insert statement答案很有效。 问题是如果一个值不存在,我需要在表格中插入一行。 f1。sql如果在插入语句时没有选择
If('x' NOT EXIXTS in (select campoX from table) then
insert into table (...) values (...) etc.
我该怎么办?在互联网上我无法找到答案:(
昨天我问了这个问题:if in mysql insert statement答案很有效。 问题是如果一个值不存在,我需要在表格中插入一行。 f1。sql如果在插入语句时没有选择
If('x' NOT EXIXTS in (select campoX from table) then
insert into table (...) values (...) etc.
我该怎么办?在互联网上我无法找到答案:(
我假设你的表名为TBL。
INSERT INTO tbl (campoX)
SELECT 'X' FROM DUAL
WHERE NOT EXISTS(
SELECT campoX from tbl
WHERE campoX ='X'
);
DUAL
纯粹是出于人谁要求所有的SELECT语句应该具有和可能的便利其他条款。MySQL可能忽略的条款。MySQL的不需要FROM DUAL如果没有表被引用。
至于其他一些提到的,你可以在这里使用INSERT IGNORE
声明如果您campoX是unigue或主键字段。
关于:
CASE
WHEN 'X' NOT EXIST IN (SELECT campoX FROM yourTable) THEN
INSERT INTO yourTable (...) VALUES (...)
END CASE
mysql给我一个CASE单词的错误。 – Martina 2013-02-20 12:23:55
@ user1856906现在尝试 – 2013-02-20 12:37:23
发明您的编程语言并不是描述问题的最合适方式。
你的意思是说你只想添加一行数据库中没有数据的地方?如果是这样,那么确保你已经在表上定义了主键或唯一键,然后执行INSERT - 但忽略重复的键错误。事实上,与MySQL可以完全使用“INSERT IGNORE ....”抑制差错发生的重复键
问题是我不想对主键进行控制,而是对一个也可以为空的属性进行控制。 – Martina 2013-02-20 12:35:15
使用双表:
INSERT INTO campoX (col1, col2, col3)
SELECT value1, value2, value3
FROM dual
WHERE NOT EXISTS(SELECT *
FROM campoX
WHERE col1=value1);
什么,如果值已经存在?你想要什么专栏的价值是独一无二的? – 2013-02-20 12:17:45
我认为你需要PL/SQL来完成这样的任务 – Abubakkar 2013-02-20 12:18:23