【mysql】一 where not exists 语句用于“按条件查询没有记录才新增”

版权声明:转载请标明出处。 https://blog.csdn.net/u010720408/article/details/88805164

需求:

多机器分布式环境下,某列要去重插入,但本身就带有重复项,无法建立唯一索引去insert update on duplicate

eg:表中有两列syscode,projecname ? syscode是唯一索引,但每个syscode下默认有一个projecname值为“所有工程”,所以projectname无法建立索引,但除了“所有工程”可重复外,projectname的其他可能的值不许重复。

实现sql语句测试:(version mysql 5.7.18)

set @sysCode=“net”
set @projName=“uc-service”;
insert [into] test_table (syscode,projectname) select @sysCode,@projName from dual where not exists (select * from test_table where projectname=@projName)

inset [into] 的into该单词要不要都能执行,已测试

重点:from dual 的使用

dual 这张表是一张默认存放临时变量表,很多奇怪得实现语句都要借助它,这一句也不例外,像传递得参数像是临时变量所以select from DUAL这张表就没问题。

测试 变种update 无法配合 where not exist

还有if not exist 是写sql存储过程方法的

需要begin end 以及更改 sql的语句分割符号“;”,麻烦,自己也懒得测试了!

猜你喜欢

转载自blog.csdn.net/u010720408/article/details/88805164