MySQL更新DATE字段报错:无法在FROM子句使用目标表求助
解决MySQL更新日期字段的报错问题
你不需要用子查询来完成这个更新操作,直接在SET语句里调用STR_TO_DATE函数即可——UPDATE操作本身可以直接访问当前行的RegistrationDate字段:
UPDATE arizona_oct24_vr SET regdate = STR_TO_DATE(RegistrationDate, '%m/%d/%Y');
原查询报错的原因
你之前写的子查询(SELECT STR_TO_DATE(RegistrationDate, '%m/%d/%Y') FROM arizona_oct24_vr)会返回整个表所有行的转换结果,没有和当前要更新的行做关联;同时MySQL不允许在UPDATE的SET子句子查询中直接引用被更新的表,这会引发歧义或数据一致性问题。直接使用字段转换函数就能完成单表的逐行更新,逻辑更清晰也更高效。
如果需要提前验证转换结果是否正确,可以执行以下查询确认:
SELECT RegistrationDate, STR_TO_DATE(RegistrationDate, '%m/%d/%Y') AS converted_regdate FROM arizona_oct24_vr;
内容的提问来源于stack exchange,提问作者Benny White
相关产品推荐
相关产品推荐

