gpt4 book ai didi

mysql - 确保列中的值不相同

转载 作者:行者123 更新时间:2023-11-29 08:51:01 26 4
gpt4 key购买 nike

我有一个表,其中有一列的值不应相同。由于实现不佳,软件不会检查以确保用户是否输入重复项,因此我被委托(delegate)编写一个“简单”sql 语句或函数来查看列中的所有值并确保它们不重复。完全相同的。 sql 本身每月执行一次,因此不必非常高效。

该列存储 int,我想增加其中一个重复值,并每次都继续执行此操作,直到表中不再有与该列具有相同值的条目。有什么建议我应该做什么吗?我不知道从哪里开始。

感谢任何人的见解。

编辑:抱歉忘记提及数据中不重复的值应保持原样。这些是供客户使用的设置,只有当它们具有重复值时我们才应该惩罚它们。如果他们不这样做,那么我们就不应该破坏他们的设置,否则他们会生气。

它只是一张表,包含很多列,但特别是这一特定列,其类型为 int 并且从不包含任何空值,不应该有任何重复项。

最佳答案

 create table tableName (KeyCol int identity(1,1), intCol int)
insert into tableName values (1), (2), (2), (3), (5), (6), (5), (7), (9)


While exists (
select intCol
from tableName
group by intCol
having count(*) > 1
)
begin

declare @newValue int

select @newValue = min(t1.intCol) + 1
from tableName t1
left join tableName t2
on t1.intCol + 1 = t2.intCol
where t2.intCol is null

update tx
set intCol = @newValue
from tableName tx
where intCol =
(select top 1 intCol
from tableName t1
group by intCol
having count(*) > 1
order by intCol)
and KeyCol = (select min(KeyCol) from tableName t2 where t2.intCol = tx.intCol)
end

select * from tableName order by 2

关于mysql - 确保列中的值不相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com