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



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

时间:

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 显然是一个日期/时间列( 为什么它包含了我不理解的时间) 。 因此,日期/时间函数更适合于比较。

原作者:
...