在Mysql中是否可以将这个查询变成1个查询?
UPDATE users SET users.title =1 WHERE users.oldId = 'adab01' LIMIT 1 ;
UPDATE users SET users.title =2 WHERE users.oldId = 'agok01' LIMIT 1 ;
UPDATE users SET users.title =1 WHERE users.oldId = 'alla01' LIMIT 1 ;
UPDATE users SET users.title =2 WHERE users.oldId = 'allm01' LIMIT 1 ;
与 SELECT 中类似的内容:
INSERT INTO users (first_name,last_name) VALUES("John", "Doe"),("Jane", "Doe")
这在 MySql 中可行吗?
只是为了让你知道我想做什么:
我正在阅读这篇文章,跳转到(避免在循环内执行 SQL 查询)
最佳答案
您需要使用 CASE
语句来执行此操作,但它不会非常漂亮:
UPDATE USER SET USER.title = (CASE USER.oldId
WHEN 'adab01' THEN 1
WHEN 'agok01' THEN 2
WHEN 'alla01' THEN 1
WHEN 'allm01' THEN 2
ELSE USER.oldID end)
WHERE USER.oldId in
(
'adab01',
'agok01',
'alla01',
'allm01'
)
请注意,WHERE
是可选的,因为没有它,数据不应该被不必要地更改,但它也会“触及”表中的每一行,而不是仅那些需要更新的。
关于mysql - 单个数据库查询中的多个 sql 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7029846/