CUSTOMERS表CONSENT字段值复制至CONSENT2的SQL语句可行性咨询
这条UPDATE语句完全不可行,问题出在这些地方
兄弟,先直接给你结论:你写的这条SQL不仅语法错误,而且逻辑上完全没必要搞这么复杂,我给你拆解清楚:
- 语法直接炸了:SET子句里多个字段赋值得用逗号分隔啊!你直接把两个赋值语句堆在一起,数据库根本识别不了。而且你搞反了赋值方向——需求是把CONSENT的值复制到CONSENT2,你写的是
CONSENT_Email = CONSENT_Email2,这是把CONSENT2的内容覆盖到CONSENT上,完全反了!另外后面的INNER JOIN都没写完,语法不完整,直接跑肯定报错。 - 自连接纯属画蛇添足:你的需求是把同一条记录里的CONSENT属性复制到对应的CONSENT2字段,这就是个单表操作,根本不需要自连接,多此一举。
- 给你写个正确的版本:如果要把
CONSENT_Email复制到CONSENT_Email2,CONSENT_Phone复制到CONSENT_Phone2,正确的写法应该是这样:
UPDATE CUSTOMERS SET CONSENT_Email2 = CONSENT_Email, CONSENT_Phone2 = CONSENT_Phone;
- 再说说禁用命令的影响:如果服务器只是禁用了DROP、TRUNCATE这类高危命令,这种普通的单表UPDATE一般不会被限制,只要你有CUSTOMERS表的UPDATE权限就行。但如果连UPDATE命令本身都被禁用了,那不管怎么写都白搭,但根据你的描述,应该只是部分命令禁用,所以上面的正确写法大概率能正常执行。
最后提一嘴:原语句里的别名CUSTOMERS_A在单表操作里完全没用,只会增加代码复杂度,没必要加。
内容的提问来源于stack exchange,提问作者Rain
相关产品推荐
相关产品推荐

