我收到了一个有几百万条记录的数据库,但显然其中可能有重复的记录。
用户向数据库中输入数据并生成主键,但是如果用户再次输入相同的数据,将为该数据生成一个新的主键,即使该数据之前已经输入过。没有对此进行检查。
我需要去寻找这些重复项,但我真的不知道从哪里开始。我首先想到连接子查询中除主键之外的所有单元格,然后计算这些行并查看哪些行的计数高于 1。
比照。
pkey recipe fkey comment
1 toast 3 tasty
2 curry 2 spicy
3 curry 2 spicy
4 bread 1 crumbly
5 orios 2 cookies
这里的 curry 条目是相同的,我必须删除其中的 1 个。
但是我读到在 mysql 中连接是不可预测的,我也觉得有点不对劲。
有什么提示吗?
假设您的表名为
ingredients
. 尝试以下操作:步骤 01) 创建一个名为的空删除键表
ingredients_delete_keys
步骤 02) 创建 PRIMARY KEY on
ingredients_delete_keys
步骤 03)
ingredients
用 fk、recipe、pkey 索引表步骤 04) 填充
ingredients_delete_keys
表格步骤 05) 使用不匹配的键对成分表执行 DELETE JOIN
步骤 06) 放下删除键
步骤 07) 去掉
fk_recipe_pkey_ndx
索引好的,这是一个块中的所有行......
试试看 !!!
警告
请注意,使用 MIN 函数有助于保留为 fk 输入的第一个 pkey。如果改为将其切换为 MAX 功能,则保留为 fk 输入的最后一个 pkey。