我有一个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'