该表已经有重复的条目。我想在MQSL DB中创建一个唯一的约束,而不删除现有的重复项。如果出现任何重复条目,则会显示错误。给定的blow查询在MYSQL中不起作用。
ALTER TABLE presence
ADD CONSTRAINT present uniqueness UNIQUE (employee_id,roll_number) where id >10000;
or
ALTER TABLE presence
ADD CONSTRAINT present uniqueness UNIQUE (employee_id,roll_number) where id <> (343,34534,34534)
SQL中有类似的解决方案吗?
向表中添加一个额外的列,指示现有值。
对于现有值,将其设置为NULL
。对于新行,给它一个常数值,比如1
。然后在此列上创建一个唯一的索引或约束:
alter table t add constraint unique (employee_id, is_old)
事实上,我意识到您可能不希望使用单例旧值和新值进行重复。这只是将值设置为NULL
的问题,仅适用于历史中的重复。因此,一行在历史数据中会有一个常数值(比如1
(。
MySQL允许NULL
上有重复的值,这就是为什么它可以工作的原因。