3 回答
TA贡献1866条经验 获得超5个赞
您可以这样操作:
UPDATE table_users
SET cod_user = (case when user_role = 'student' then '622057'
when user_role = 'assistant' then '2913659'
when user_role = 'admin' then '6160230'
end),
date = '12082014'
WHERE user_role in ('student', 'assistant', 'admin') AND
cod_office = '17389551';
我不了解您的日期格式。日期应使用本机日期和时间类型存储在数据库中。
TA贡献1853条经验 获得超18个赞
MySQL提供了一种更具可读性的方法,可以将多个更新组合到一个查询中。这似乎更适合您描述的场景,更容易阅读,并且避免了那些难以解开的多重条件。
INSERT INTO table_users (cod_user, date, user_rol, cod_office)
VALUES
('622057', '12082014', 'student', '17389551'),
('2913659', '12082014', 'assistant','17389551'),
('6160230', '12082014', 'admin', '17389551')
ON DUPLICATE KEY UPDATE
cod_user=VALUES(cod_user), date=VALUES(date)
假定user_rol, cod_office组合是主键。如果其中只有一个是PK,则将另一个字段添加到UPDATE列表中。如果它们都不是主键(这似乎不太可能),则此方法将始终创建新记录-可能不是想要的。
但是,这种方法使准备好的语句更易于构建和更加简洁。
TA贡献1829条经验 获得超13个赞
您可以使用CASE语句来处理多个if / then方案:
UPDATE table_to_update
SET cod_user= CASE WHEN user_rol = 'student' THEN '622057'
WHEN user_rol = 'assistant' THEN '2913659'
WHEN user_rol = 'admin' THEN '6160230'
END
,date = '12082014'
WHERE user_rol IN ('student','assistant','admin')
AND cod_office = '17389551';
添加回答
举报