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;
我正在尝试编写一个查询来一次更新我的 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;