我一直在使用双列主键,但我刚发现第二列(第2列)的值映射到导致重复的同一项目。
我创建了一个新列(第3列),我想从中创建一个双列主键。我需要通过删除重复的行项目为新主键准备数据库。
我正在寻找可以隔离重复列的查询:例如第1列和第3列都是重复的。 E.g。
Column 1 Column 2 Column 3 Remove?
1 a x n
1 b x y
2 b y n
3 c z n
3 d z y
3 e z y
4 f x n
请注意,我保留哪个列值并不重要,因为它们是等效的,第3列是相同的。
答案 0 :(得分:0)
你可以通过对你的键列进行分组,并在其他列上使用MIN()或MAX()来提取你想要保留的数据[因为你说你不关心你保留哪个值,来自第2栏]。
Select Column1, Column3, MAX(Column2) As Column2
from Table1
Group By Column1, Column2
将其放入临时表中,然后从原始表中删除所有记录,并替换为临时表中的所有内容。
答案 1 :(得分:0)
以下是如何通过创建新表来删除表中重复行的示例。假设您的原始表名(带有重复项)是tbl
,您应该在运行此查询后最终在数据库中使用两个表:tbl
这是没有重复项的新表,{{1这是原始表(刚重命名):
tbl_old
实施例: http://sqlfiddle.com/#!2/da167/1/0
来源: https://dba.stackexchange.com/questions/9602/deleting-duplicates-with-group-by-and-count