我有一个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行
***但事情是,我想要更新的只是在其中一个表中,而不是两个
答案 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;