MySQL根据多表更新列

时间:2010-09-13 12:09:13

标签: mysql

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

我有三个表:Match,Submission和SubmissionVersion。 SubmissionVersion可以设置为“收藏夹”。但我不能只查询UPDATE SubmissionVersion SET IsFavorite = 1 WHERE ID = $ID因为与提交和匹配的关系。我的问题是如何使用带有两个连接的MySQL查询更新SubmissionVersion列?我已经尝试过这个查询,但我无法让它工作。

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 个答案:

答案 0 :(得分:1)

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'")

如果我理解你的陈述,那应该有用。

我完全删除了Match表,因为您只是在Submission中检查列的值。

答案 1 :(得分:0)

让我们先说MATCH是MySQL的保留字,所以需要加入反引号。

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