SQL更新特定ID上的多行

时间:2015-08-22 18:50:37

标签: sql sql-update

我正在尝试编写一个查询来一次更新我的SQL表的几行。下面是我尝试过的代码,它似乎不是正确的SQL,因为它不起作用。有没有办法实现这个是一个查询?

$query = "UPDATE table_names
          SET Name='Bob' WHERE ID=7 
          SET Name='Mike' WHERE ID=34"

3 个答案:

答案 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;