Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 更新同一表中的列_Mysql_Sql_Sql Update - Fatal编程技术网

Mysql 更新同一表中的列

Mysql 更新同一表中的列,mysql,sql,sql-update,Mysql,Sql,Sql Update,尝试更新行数据库中的值时出现问题。我需要更新(添加1小时)到用户表中的特定用户 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

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

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

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

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

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

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

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

update user u
    set dateOfBirth = DATE_ADD(dateOfBirth, INTERVAL 1 HOUR)
where time(u.dateOfBirth) = '23:00:00';
请注意,
dateOfBirth
显然是一个日期/时间列(为什么它包含一个我不理解的时间)。因此,日期/时间函数更适合进行比较。

有什么问题:

UPDATE USER
SET dateOfBirth = DATE_ADD(dateOfBirth, INTERVAL 1 HOUR)
WHERE dateOfBirth like '%23:00:00%';
有什么问题吗

UPDATE USER
SET dateOfBirth = DATE_ADD(dateOfBirth, INTERVAL 1 HOUR)
WHERE dateOfBirth like '%23:00:00%';

更新中的子查询不是必需的

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

更新中的子查询不是必需的

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

USER
是保留的mysql关键字出生日期需要时间吗?也许约会类型会使一些事情变得更简单。我越是关注这里正在做的事情,它就越像是对由于时区或夏/冬时钟变化时间打嗝而发生的事情的修复。因此,只要将列设为日期类型,就可以避免再次出现这种情况
USER
是保留的mysql关键字出生日期需要时间吗?也许约会类型会使一些事情变得更简单。我越是关注这里正在做的事情,它就越像是对由于时区或夏/冬时钟变化时间打嗝而发生的事情的修复。因此,只需将该列设置为日期类型,避免再次出现“为什么它包含一个我不明白的时间”这样的问题,如果您需要计算精确的年龄计算怎么办?Annyhow+1Hi@RaymondNijland我很想知道一个情况,我的年龄需要准确地知道:)但是我是一个老吉特Hello@RiggsFolly在医院也许或者你的评论是一个反问:-)@RaymondNijland。该列称为dateOfBirth。所谓的日期应该是日期。而且,特别是像“出生日期”这样的东西,在列中包含时间成分确实是误导。如果这是一家医院,那么
DatetimeOfBirth
将是合适的。看看查询正在做什么,我会猜测这是一个时区或时钟变化问题的修复,而不是日期列的问题:)“为什么它包含时间我不明白”如果需要计算精确的年龄计算怎么办?Annyhow+1Hi@RaymondNijland我很想知道一个情况,我的年龄需要准确地知道:)但是我是一个老吉特Hello@RiggsFolly在医院也许或者你的评论是一个反问:-)@RaymondNijland。该列称为dateOfBirth。所谓的日期应该是日期。而且,特别是像“出生日期”这样的东西,在列中包含时间成分确实是误导。如果这是一家医院,那么
DatetimeOfBirth
将是合适的。查看查询正在执行的操作,我会猜测这是对时区或时钟更改问题的修复,而不是日期列的问题:)