记录问题 INSERT INTO table ... SELECT ... FROM dual WHERE not exists (...)问题
前言 : 在处理记录是否已存在这个问题时 , 遇到的问题 , 分享出去希望给大家避坑!!!
初始"错误" sql :
INSERT INTO
"正确" sql :
INSERT INTO
细心的老哥们看到他们的区别了 ,是的 "
因为不太了解 dual 这个虚拟表是什么 , 在查找资料有个初步了解 :
DUAL is purely for the convenience of people who require that all SELECT statements should
have FROM and possibly other clauses.MySQL may ignore the clauses. MySQL does not require
FROM DUAL if no tables are referenced.
解释就是 : DUAL纯粹是为了方便那些要求所有SELECT语句都应该具有FROM和其他子句的。 MySQL可能会忽略这些子句。如果没有引用表,MySQL不需要FROM DUAL。
当然,肯定想到了这个 dual 表到底是个什么东西、它里面到底放着什么!想用:select * from ; 和 show create table 查看一下他的记录。但是这两条 sql都会返回错误!可能因为就是虚拟表吧
重点 : 为什么在本地执行数据库执行