MySQL语句级避免重复插入
背景
每次启动都会检查表中数据,表中没有数据插入一条默认的数据,表中出现数据后不插入默认数据
SQL语句
INSERT INTO tableName (column,column2,,,) SELECT (value,value2,,,)
FROM dual WHERE NOT EXISTS(
SELECT * FROM tableName
);
INSERT INTO table(a,b)
SELECT a,b
FROM dual
WHERE NOT EXISTS(
SELECT *
FROM table
WHERE value = ?
);
SQL脚本
INSERT INTO `tableName` (`column`,`column2`,,,) SELECT `value1,`value2`
FROM dual WHERE NOT EXISTS(
SELECT * FROM `tableName`
);
说明:
dual是为了构建查询语句而存在的表,Oracle中很常见,配合INSERT ... SELECT构建成我们需要的表,并指定了数据项.
EXISTS通过这个判断是否存在的函数,就免去了我们做IF-ELSE的冗繁操作.
在写SQL脚本时,SELECT后的括号需要去掉,否则会引发 Operand should contain 1 column(s)
的错误