如何更新日期类型列?

时间:2010-04-06 06:28:01

标签: sql mysql

update answers a1 
   set a1.FilingDate=(
                       select date_sub( a2.FilingDate
                                       ,Interval 1000 Year) as FilingDate
                       from answers a2 
                       where Year(a2.FilingDate)>=3000
                     )
where Year(a1.FilingDate)>=3000

但是它给了我以下错误:

  

您的SQL语法有错误;   检查对应的手册   您的MySQL服务器版本   在'update附近使用正确的语法   答案a1设置a1.FilingDate =(选择   date_sub(a2.FilingDate,Interval 10'at   第1行

有谁能告诉我这个问题及其解决方案?

1 个答案:

答案 0 :(得分:2)

您的子查询可以在A1中每行返回多个值,MySQL不知道它应该从A2中选择哪个值!

我认为您的查询也可以阅读:

update answers a1 
   set a1.FilingDate=date_sub( a1.FilingDate,Interval 1000 Year)
where Year(a1.FilingDate)>=3000

CAVEAT 在备份时尝试此操作!