SQL 更新特定 ID 的多行

SQL update multiple rows on specific ID's

我正在尝试编写一个查询来一次更新我的 SQL table 的多行。下面是我试过的代码,它似乎不正确 SQL 因为它不起作用。有没有一种方法可以完成这个是一个查询?

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

一种方法是使用 case 表达式:

UPDATE table_name
SET    name = CASE id WHEN 7  THEN 'Bob'
                      WHEN 34 THEN 'Mike'
              END
WHERE  id IN (7, 34)

我建议使用 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

类似的东西,如果您真的要寻找一个查询,请找到如何使用 "on duplicate"

但我建议使用 2 个查询。

这个解决方案比我发现的“case when”更实用,您可以根据需要更新任意数量的列

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;