记录今天执行SQL报错 You can't specify target table 'l' for update in FROM clause
意思是说:对同一张表不能查出某些值,在同时更新这张表的值,这样MySQL语法是不支持的。
错误写法:
UPDATE t_user l
SET l.user_name = (SELECT t.user_name FROM t_user t), l.update_time = now()
WHERE l.id = 'U0123456789';
正确写法:
UPDATE t_user l
SET l.user_name = (SELECT user_name FROM (SELECT t.user_name FROM t_user t) uu), l.update_time = NOW()
WHERE l.id = 'U0123456789';
说明:就是给子查询在套一层查询,让mysql感觉操作的不是同一张表,而是一张临时数据表 uu。
参考链接:MYSQL之You can't specify target table for update in FROM clause解决办法_若如初见的博客-CSDN博客