3 回答

TA貢獻(xiàn)1866條經(jīng)驗 獲得超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';
我不了解您的日期格式。日期應(yīng)使用本機(jī)日期和時間類型存儲在數(shù)據(jù)庫中。

TA貢獻(xiàn)1853條經(jīng)驗 獲得超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列表中。如果它們都不是主鍵(這似乎不太可能),則此方法將始終創(chuàng)建新記錄-可能不是想要的。
但是,這種方法使準(zhǔn)備好的語句更易于構(gòu)建和更加簡潔。

TA貢獻(xiàn)1829條經(jīng)驗 獲得超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';
添加回答
舉報