根据WHERE语句更新1个表或另一个表

时间:2015-02-09 17:47:37

标签: php mysql

我有一个UNION语句,可以使用WHERE子句从2个表中检索数据。

只是想知道是否可以使用SQL语句来更新table1或table2中的列(Comments),具体取决于数据所在的表。

我正在思考下面的事情......

UPDATE `table1` OR `table2` 
SET `Comments` = '$AddComment' 
WHERE `column` = '$GetColumn'

我已在问题中尝试过该声明,但收到以下错误消息...

  

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在' OR table2之间使用正确的语法.SET评论='评论' WHERE column =' $ GetColumn'在第1行

***但事情是,我想要更新的只是在其中一个表中,而不是两个

3 个答案:

答案 0 :(得分:1)

UPDATE `table1` 
SET `Comments` = '$AddComment' 
WHERE `column` = '$GetColumn'

UPDATE `table2` 
SET `Comments` = '$AddComment' 
WHERE `column` = '$GetColumn'

Maybe it is easier do it twice......

答案 1 :(得分:0)

您正在查看how to update multiple tables at once,应该通过逗号(,)进行分离,而不是OR条件。

由于您希望检查是否设置了特定条件,因此使用CASE是有意义的,如this Stackoverflow answer中所述。

Combining the correct syntax along with the case应该会产生类似的结果:

UPDATE table1 at, articles bt
SET at.Comments = CASE WHEN at.column = '$GetColumn' AND bt.column <> '$GetColumn' THEN '$AddComment'
    ELSE at.Comments
END
, 
bt.Comments = CASE WHEN bt.column = '$GetColumn' AND at.column <> '$GetColumn' THEN '$AddComment'
    ELSE bt.Comments
END
;

其中set语句通过逗号分隔,并且在每种情况下都检查是否适用正确的条件。

答案 2 :(得分:0)

我设法绕过它的方式是将2个UPDATE语句放在彼此的旁边而不是

更新table1
设置Comments =&#39; $ AddComment&#39;
Column =&#39; $ GetColumn&#39;

更新table2
设置Comments =&#39; $ AddComment&#39;
Column =&#39; $ GetColumn&#39;