mysql - mysql - 更新列相同的表

  显示原文与译文双语对照的内容
135 2

我尝试更新行数据库中的值时遇到问题。我需要更新(添加1小时)给USER表中的特定用户。

SELECT DATE_ADD(dateOfBirth, INTERVAL 1 HOUR), dateOfBirth 
from USER 
where dateOfBirth like '%23:00:00%';

但是,当我执行下一次更新时,显示错误

UPDATE USER
set dateOfBirth = DATE_ADD(dateOfBirth, INTERVAL 1 HOUR)
where id in (select u.id FROM USER u where u.dateOfBirth like '%23:00:00%');

错误:

Error Code: 1093. You can't specify target table 'USER' for update in FROM clause

用其他方式执行这句话有可能吗?

时间:原作者:0个回答

78 3

不需要更新中的子查询。

UPDATE USER
set dateOfBirth = DATE_ADD(dateOfBirth, INTERVAL 1 HOUR)
where dateOfBirth like '%23:00:00%';
原作者:
71 0

你可以试试下面-

UPDATE `USER`
set dateOfBirth = DATE_ADD(dateOfBirth, INTERVAL 1 HOUR)
where id in (select u.id FROM `USER` u where u.dateOfBirth like '%23:00:00%');
原作者:
120 2

id 在表中不是唯一的?如果是:

update user u
 set dateOfBirth = DATE_ADD(dateOfBirth, INTERVAL 1 HOUR)
where time(u.dateOfBirth) = '23:00:00';

注意,dateOfBirth 显然是一个日期/时间列( 为什么它包含了我不理解的时间) 。因此,日期/时间函数更适合于比较。

原作者:
...