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)的错误

posted @ 2021-02-22 15:39  云子墨  阅读(59)  评论(0编辑  收藏  举报