我正在尝试编写一个查询来一次更新我的SQL表的几行。下面是我尝试过的代码,它似乎不是正确的SQL,因为它不起作用。有没有办法实现这个是一个查询?
$query = "UPDATE table_names
SET Name='Bob' WHERE ID=7
SET Name='Mike' WHERE ID=34"
答案 0 :(得分:1)
一种方法是使用case
表达式:
UPDATE table_name
SET name = CASE id WHEN 7 THEN 'Bob'
WHEN 34 THEN 'Mike
END
WHERE id IN (7, 34)
答案 1 :(得分:1)
我建议用2个查询来做这个:
UPDATE table_names
SET Name='Bob' WHERE ID=7
UPDATE table_names
SET Name='Mike' WHERE ID=34
你可以在一个查询中执行此操作,但我认为这不是正确的方法:
INSERT table_name
KEYS (id, `name`)
VALUES (7, 'Bob'), (34, 'Mike')
ON DUPLICATE Key UPDATE
类似的东西,如果你真的在寻找一个查询,那就找到如何使用"复制"
但我建议使用2个查询。
答案 2 :(得分:0)
此解决方案比我发现的“情况”更实用,您可以根据需要更新任意数量的列
UPDATE searches_group_library
SET compiled_query = new_val.compiledq
FROM (VALUES
(28, 'fakecompilation'),
(57, 'fakecompilation2')
) new_val (id, compiledq)
WHERE new_val.id = searches_group_library.id;