Mysql多个唯一键

时间:2011-12-12 14:10:48

标签: mysql on-duplicate-key

多个唯一键时是否可以有一个或选项?

例如,我要检查此密钥或此密钥,如果发现重复错误,则更新该密钥?

我有2个唯一键:UPN和(用户名,学校)

我们在MYSQL中使用了一个重复的更新语句。如果传递了UPN,则更新upn key(如果重复或插入新行)。我想检查UPN和(用户名,学校)并执行以下操作:

如果upn匹配更新 如果(用户名,学校)匹配更新 如果upn dosnt匹配但(用户名,学校)更新(用户名,学校)匹配 如果upn匹配并且(用户名,学校)dosnt更新UPN匹配

所以我需要它来使用或代替和,这可能吗?

1 个答案:

答案 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));

此案例中的更新顺序非常重要。