我试图了解如何更新具有不同值的多行,我只是没有得到它。解决方案无处不在,但对我来说,它看起来很难理解。
例如,对一个查询进行三次更新:
UPDATE table_users
SET cod_user = '622057'
, date = '12082014'
WHERE user_rol = 'student'
AND cod_office = '17389551';
UPDATE table_users
SET cod_user = '2913659'
, date = '12082014'
WHERE user_rol = 'assistant'
AND cod_office = '17389551';
UPDATE table_users
SET cod_user = '6160230'
, date = '12082014'
WHERE user_rol = 'admin'
AND cod_office = '17389551';
我读了一个例子,但我真的不明白如何进行查询。即:
UPDATE table_to_update
SET cod_user= IF(cod_office = '17389551','622057','2913659','6160230')
,date = IF(cod_office = '17389551','12082014')
WHERE ?? IN (??) ;
我不完全清楚如何做查询,如果有多个条件在哪里和在if条件..有什么想法?
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组合是一个主键。如果其中只有一个是主键,则将另一个字段添加到UPDATE列表。
如果它们都不是主键(这似乎不太可能),那么这种方法总是会创建新记录——这可能不是我们想要的。
但是,这种方法使准备好的语句更容易构建,也更简洁。
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组合是一个主键。如果其中只有一个是主键,则将另一个字段添加到UPDATE列表。
如果它们都不是主键(这似乎不太可能),那么这种方法总是会创建新记录——这可能不是我们想要的。
但是,这种方法使准备好的语句更容易构建,也更简洁。