我正在尝试更新某行的某列,其中id是某个值。问题是,列的数量/名称是可变的,它们各自的id也是可变的。
例如:
UPDATE table SET column1="hello" WHERE id = 5
UPDATE table SET column2="cucumber" WHERE id = 6
我如何在PDO中进行单个mysql查询来做到这一点?我尝试的第一件事是…
UPDATE table SET column1="hello", column4="bye" WHERE id IN(5, 6)
但该查询将在找到这两个ID的行中更新这两个列,而这不是我想要的。是否只能逐个查询?
请记住,SET之后的参数是可变的,因此要更新的列、它们的值以及它们各自的id也是可变的。一个可以纯绑定值的解决方案会很好,但如果我必须用转义变量构建查询字符串,那么也可以。非常感谢。
您可以执行此
UPDATE table t1 JOIN table t2
ON t1.id= 5 AND t2.id= 6
SET t1.column1= 'hello',
t2.column2 = 'cucumber';
或者,如果你想在单列上这样做
UPDATE table
SET column2 = CASE id
WHEN 5 THEN 'hello'
WHEN 6 THEN ''
END
WHERE id IN(5, 6);