表:
ProductComapny
字段:id
,name
ProductComapny
内容10000记录。
现在我希望id
设置主键但是已经重复了多次id
次录音
1.how can id
设置主键???
2.如何删除重复记录?
3.如何获得重复记录的数量?
在SqlServer和MySql中使用BY SQL
学习
答案 0 :(得分:5)
SQL Server
已回答 - 这在MySQL
中无效。请指明哪些人,而不是光顾能够帮助你的人。
获取重复次数:
SELECT id, name, COUNT(*) FROM productCompany GROUP BY id, name
要应用主键,请先删除重复项,如下所示:
WITH sorted AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY id, name) AS duplicate_id,
id,
name
FROM
productCompany
)
DELETE
sorted
WHERE
duplicate_id > 1
然后使用Management Studio应用主键。
答案 1 :(得分:2)
3.如何获得重复记录的数量?
SELECT id, COUNT(*)
FROM ProductCompany
GROUP BY id
HAVING COUNT(*) > 1
2.如何删除重复记录?
你会如何选择保留哪一个?
答案 2 :(得分:1)
如果你的问题是关于MySQL,那么这将是:
广告3:SELECT COUNT(*),id FROM ProductComapny GROUP BY id
将为您计算数据库中每个ID的出现次数(顺便说一下“ProductCom ap ny”?)
广告2:这取决于您的业务逻辑 - 您想保留哪些内容?
广告1:ALTER TABLE ProductComapny ADD PRIMARY KEY(id);
(是的,MySQL / MSSQL差异很重要:IIRC以上都不是MSSQL中的有效代码)
答案 3 :(得分:1)
如果你强制mysql添加一个主键,它将删除所有副本以便能够执行,你可以强制替换一个表whit的关键字ignore,忽略警告。
ALTER IGNORE TABLE ProductComapny ADD PRIMARY KEY (id);
答案 4 :(得分:0)
删除重复条目的一种方法是将它们复制到临时表中,从主表中删除所有重复项,将数据从temp复制到main。
插入TempTable
选择id,名称
来自ProductComapny
按ID分组,名称
有计数(*)> 1个
从ProductComapny中删除
其中id为(从TempTable中选择id)
插入ProductComapny
选择id,名称
来自TempTable
这应该有用 之后,您可以在ID字段上设置主键,因为不会再有重复项。