多个唯一键时是否可以有一个或选项?
例如,我要检查此密钥或此密钥,如果发现重复错误,则更新该密钥?
我有2个唯一键:UPN和(用户名,学校)
我们在MYSQL中使用了一个重复的更新语句。如果传递了UPN,则更新upn key(如果重复或插入新行)。我想检查UPN和(用户名,学校)并执行以下操作:
如果upn匹配更新 如果(用户名,学校)匹配更新 如果upn dosnt匹配但(用户名,学校)更新(用户名,学校)匹配 如果upn匹配并且(用户名,学校)dosnt更新UPN匹配
所以我需要它来使用或代替和,这可能吗?
灰
答案 0 :(得分:1)
您可以使用查询的ON DUPLICATE
子句中的条件运算符来模拟它:
INSERT INTO thetable (id, username, school, othervalue)
VALUES (10, 'newtover', 'cool school', 'a comment')
ON DUPLICATE KEY UPDATE
username = IF(id = VALUES(id), VALUES(username), username),
school = IF(id = VALUES(id), VALUES(school), school),
id = IF(id = VALUES(id), id, VALUES(id));
此案例中的更新顺序非常重要。