2010-09-13 92 views
1

我有关于更新MySQL数据库的问题。MySQL根据多个表更新列

我有三个表:Match,Submission和SubmissionVersion。 SubmissionVersion可以设置为'Favorite'。但是我不能仅仅因为提交和比赛的关系而询问UPDATE SubmissionVersion SET IsFavorite = 1 WHERE ID = $ID。我的问题是如何更新一个带有两个连接的MySQL Query的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 

回答

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表,因为您只是在提交中检查列的值。

+0

非常感谢!这工作! – Ben 2010-09-13 13:22:52

+0

顺便说一句,查询中有一个错误。 sv.ID应该是sv.SubmissionID,在数据库中看到一些奇怪的更新后自己想出了这个;)谢谢! – Ben 2010-09-13 13:47:53