你设置了主键,就应该是唯一的,要插入重复项,就要删除主键约束,这个时候就要自己创造主键。
给你举个例子,在我们入学的时候,学校要把每个学生存入数据库,假如,学校跟你一样,刚开始觉得把学生名字作为主键也是可以得,于是,学生名字为主键,可是突然发现有的学生名字一样,就碰到了跟你一样的问题,学校是怎么解决的呢? 学校就创建了一个新的项作为主键,就是学号,所以你也应该创建这样一个永远不会重复的项来作为主键。
你可以先导入,并在数据库中创建一个行号列,记录每一行的行号。导入后,再对数据进行处理,设要判断重新的字段为Col1,设行号列为ID1,
设表名为TBL,那么代码如下:
DECLARE
@T
TABLE(
Col1
VARCHAR(1000
)
)
DECLARE
@C1
VARCHAR(1000)
INSERT
@T(
Col1
)
SELECT
Col1
FROM
TBL
GROUP
BY
Col1
HAVING
COUNT()
>
1
WHILE
((SELECT COUNT(*)FROM @T)>
0
)
BEGIN
SELECT
TOP
1
@C1
=
Col1
FROM
@T1
DELETE
@T
WHERE
Col1
=
@C1
DELETE
TBL
WHERE
Col1
=
@C1
AND
ID1
<
(
SELECT
MAX(
ID1
)
FROM
WHERE
Col1
=
@C1
)
END
在知道那个字段重复的情况
select StudentId from ScoreList group by StudentId having COUNT()>1
同理你这里只是多个字段而已 处理的方式一致
你大概理解有点偏差
如果你创建两个主键的话,
单一个主键的内容和其他行重复是不会提示的
只有两个主键的内容都重复才会有主键重复提示
例如列a,b
已有
a,b
1,2
2,3
现在键入
a,b
1,3
是不会提示重复的
如果键入
a,b
1,2
此时才会提示重复
如果想两个主键都不重复,建议使用约束条件
以上就是关于SQL 我设置了主键 然后主键就唯一了,不能添加重复项,很懊恼啊!全部的内容,包括:SQL 我设置了主键 然后主键就唯一了,不能添加重复项,很懊恼啊!、c#从excel导入sql数据库,主键重复则更新问题、sql server的数据,主键唯一,但是主键以外的数据有可能重复的情况,我怎么将重复的数据主键查询出来啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)