相关疑难解决方法(0)

如何删除没有临时表的MySQL表中的所有重复记录

我已经看到了很多这方面的变化,但没有什么能与我想要完成的完全匹配.

我有一张表,TableA其中包含用户给出的可配置调查问卷的答案.列是member_id, quiz_num, question_num, answer_num.

不知何故,一些成员得到了两次提交的答案.所以我需要删除重复的记录,但要确保留下一行.

没有列,因此可能有两行或三行都具有完全相同的数据.

是否有查询删除所有重复项?

mysql sql duplicates unique-index sql-delete

45
推荐指数
5
解决办法
11万
查看次数

删除Oracle中的大量数据

我不是一个数据库人,我的大部分数据库工作都是MySQL,所以请原谅我,如果这个问题中的某些内容非常天真.

我需要从一个有大约1亿行的Oracle表中删除550万行.我有一个临时表中需要删除的行的ID.如果它只是几千行,我会这样做:

DELETE FROM table_name WHERE id IN (SELECT id FROM temp_table);
COMMIT;
Run Code Online (Sandbox Code Playgroud)

有什么我需要注意和/或做的不同,因为它是550万行?我想做一个循环,这样的事情:

DECLARE
  vCT NUMBER(38) := 0;

BEGIN
  FOR t IN (SELECT id FROM temp_table) LOOP
    DELETE FROM table_name WHERE id = t.id;
    vCT := vCT + 1;
    IF MOD(vCT,200000) = 0 THEN
      COMMIT;
    END IF;
  END LOOP;
  COMMIT;
END;
Run Code Online (Sandbox Code Playgroud)

首先 - 这是做我认为的 - 一次批量提交20万次?假设它是,我仍然不确定生成550万个SQL语句,批量提交200,000,还是有一个SQL语句并一次提交所有更好.

想法?最佳做法?

编辑:我运行了第一个选项,单个删除语句,它只需要2个小时才能完成开发.基于此,它排队等待在生产中运行.

sql oracle plsql

14
推荐指数
4
解决办法
5万
查看次数

标签 统计

sql ×2

duplicates ×1

mysql ×1

oracle ×1

plsql ×1

sql-delete ×1

unique-index ×1