【问题标题】:MySQL update from one table to another with condition not working?MySQL 从一个表更新到另一个表,条件不工作?
【发布时间】:2011-08-04 03:02:33
【问题描述】:

我尝试了一个似乎对其他人有用的解决方案:

Update table a from table b where (conditions) 我似乎无法让它工作,MySql 给了我一个语法错误。

我有两个表,我需要将一个表中的列更新为两个表中 id 匹配的另一列的值。

UPDATE video_data SET video_data.date_timestamp = video.date_timestamp FROM video_data JOIN video ON video_data.video_id = video.video_id

我不确定我的语法有什么问题。我很累,也许只是我的眼睛在玩我。感谢您的帮助!

【问题讨论】:

  • 对我来说看起来不错...你用分号结尾?
  • 我在 phpmyadmin 中运行它,我添加了分号以确保,但同样的错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“FROM video_data JOIN video ON video_data.video_id = video.video_id”附近使用正确的语法

标签: mysql join


【解决方案1】:

试试这个语法:

UPDATE video_data, video 
SET video_data.date_timestamp = video.date_timestamp
WHERE  video_data.video_id = video.video_id

【讨论】:

  • 我感觉是那个人在没有任何条件的情况下发布了错误的答案。 :(
  • 这很完美,我在 50 秒内更新了 8,341,529 条记录。我以为我原来的 SQL 和这个类似,但显然我在那个上也错了,谢谢你的帮助!
【解决方案2】:
UPDATE video_data, video SET video_data.date_timestamp = video.date_timestamp
WHERE video_data.video_id = video.video_id

【讨论】:

    【解决方案3】:

    试试这个:

    UPDATE video_data SET date_timestamp = (SELECT video.date_timestamp FROM video WHERE  video.video_id = video_data.video_id)
    

    虽然您的实际查询中的错误只是您错过了“SELECT”

    UPDATE video_data SET video_data.date_timestamp = SELECT video.date_timestamp FROM video_data JOIN video ON video_data.video_id = video.video_id
    

    但我不认为这是你想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 2014-04-18
      相关资源
      最近更新 更多