【问题标题】:MySQL UPDATE multiple tables at onceMySQL 一次更新多个表
【发布时间】:2013-06-24 09:18:18
【问题描述】:

我对这个问题有一百万个不同的答案,而且它们看起来都不同。一定有什么办法可以简单的解释一下吧?

如果你有两个这样的表:

Exhibition
ID *
DESC
CURATOR

Schedule
ID *
TITLE
STARTDATE
ENDDATE

每个 ID 引用另一个,每个表都存储关于同一对象的不同内容。

如何在一个语句中用新信息更新每一列?

我尝试过类似的方法:

    UPDATE Schedule
    INNER JOIN Exhibition
    USING (ID)
    SET Schedule.Title =            :Title, 
        Exhibition.Desc =           :Desc,
        Schedule.StartDate =        :StartDate, 
        Schedule.EndDate =          :EndDate
    WHERE ID = :ID;

但无济于事。我觉得这应该非常容易,但我只是想念它。

【问题讨论】:

  • :EndDate, 上的额外逗号?具体错误是什么?哦顺便说一句,在这一行WHERE ID = :ID 指定源表是Schedule.ID or Exhibition.ID 否则你会得到 "ambiguous column error..."
  • @JW웃 我没有收到任何错误,只是没有更新列,所以我认为我的查询有误。
  • mysql 命令行或phpmyadmin 尝试它是否有效?
  • @Sean 只要它与表或别名相关联,它就会起作用,sqlfiddle.com/#!2/72e3c/1
  • 这可能是 JW 发现的模棱两可的列。现在一切正常。

标签: php mysql pdo sql-update


【解决方案1】:

这样更新

UPDATE Schedule, Exhibition
    SET Schedule.Title =            :Title, 
        Exhibition.Desc =           :Desc,
        Schedule.StartDate =        :StartDate, 
        Schedule.EndDate =          :EndDate
    WHERE ID = :ID AND Schedule.refcol = Exhibition.refcol;

【讨论】:

    【解决方案2】:

    显然WHERE ID = :ID 太模棱两可了。将其更改为 WHERE Schedule.ID = :ID 具有预期的效果。

    感谢JW웃

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      相关资源
      最近更新 更多