MYSQL之You can't specify target table for update in FROM clause

发现了个mysql傻逼的地方,一直用oracle,感觉这个情况下mysql就是傻逼
看了一下前辈的文章
https://blog.csdn.net/z_youarethebest/article/details/53785487
不能先select出同一表中的某些值,再update这个表(在同一语句中)

错误的语句

UPDATE 
  cold_sys_address 
SET
  isdefault = '0' 
WHERE userid = 
  SELECT 
      d.userid 
    FROM
      cold_sys_address d 
    WHERE d.`id` = '4799990471714')
  AND `type` = '3' 

外面套了一层 把他骗过去了,这其实还是同一张表的嘛 ,mysql傻逼

UPDATE 
  cold_sys_address 
SET
  isdefault = '0' 
WHERE userid = 
  (SELECT 
    userid 
  FROM
    (SELECT 
      d.userid 
    FROM
      cold_sys_address d 
    WHERE d.`id` = '4799990471714') t) 
  AND `type` = '3' 
发布了49 篇原创文章 · 获赞 5 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/wangwenpeng0529/article/details/81222149