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


UPDATE 1 table or another table depending on WHERE statement

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

只是想知道是否可以使用SQL语句根据数据所在的表更新表1或表2中的列(Comments)。

我在想下面的事情。。。

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

我已经尝试了问题中的语句,但是收到了以下错误消息。。。

您的SQL语法有错误;在第1行的"OR table2 SET Comments=comment"WHERE column="$GetColumn"附近,查看与MySQL服务器版本相对应的手册,以获得正确的语法

***问题是,我试图更新的只是其中一个表,而不是两个

UPDATE `table1` 
SET `Comments` = '$AddComment' 
WHERE `column` = '$GetColumn'
UPDATE `table2` 
SET `Comments` = '$AddComment' 
WHERE `column` = '$GetColumn'
Maybe it is easier do it twice......

您正在研究如何一次更新多个表,其中应该通过逗号(,)而不是OR条件进行分隔。

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

将正确的语法与大小写结合起来应该会产生类似的结果:

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语句用逗号分隔,在每种情况下,您都要检查是否适用正确的条件。

我设法绕过它的方法是将两个UPDATE语句放在一起,而不是

更新table1
SET Comments='$AddComment'
WHERE Column='$GetColumn'

更新table2
SET Comments='$AddComment'
WHERE Column='$GetColumn'

相关文章: