代码之家  ›  专栏  ›  技术社区  ›  Ben

MySQL根据多表更新列

  •  1
  • Ben  · 技术社区  · 14 年前

    我有一个关于更新MySQL数据库的问题。

    我有三个表:Match,Submission和SubmissionVersion。SubmissionVersion可以设置为“Favorite”。但我不能质疑 UPDATE SubmissionVersion SET IsFavorite = 1 WHERE ID = $ID

    UPDATE
        SubmissionVersion
    JOIN
        Submission
    ON
        Submission.ID, SubmissionVersion.SubmissionID
    JOIN
        Match
    ON
        Match.ID ON Submission.MatchID
    SET
        SubmissionVersion.IsFavorite    = ".$Index."
    WHERE
        SubmissionVersion.ID        = ".$ID."
    AND
        Match.ID            = ".$MatchID
    
    2 回复  |  直到 13 年前
        1
  •  1
  •   Jeremy Goodell    14 年前
    UPDATE SubmissionVersion sv
    SET    sv.IsFavorite = ".$Index."
    WHERE  sv.ID = ".$ID."
    AND    sv.ID IN (
           SELECT s.ID
           FROM   Submission s
           WHERE  s.MatchID  = ".$MatchID'")
    

    如果我对你的陈述理解正确,那就行了。

    我完全消除了匹配表,因为您只是在提交时对照一列检查值。

        2
  •  0
  •   Mchl    14 年前

    让我们先说MATCH是MySQL的保留字,所以需要放到backticks中。

    http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html