在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查询)
答案 0 :(得分:2)
您需要使用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
是可选的,因为没有它,数据不应该被不必要地更改,但它也会“触摸”表中的每一行而不仅仅是那些需要更新。