Loops 用于删除记录的PL/SQL循环

Loops 用于删除记录的PL/SQL循环,loops,plsql,Loops,Plsql,对于大多数人来说,这将是一个简单的问题,但我找不到答案,我们的开发人员也不会帮助他们使用sql。我完全是个业余爱好者 我有一个名为User_accounts的表,它有两个字段:UserID和Value。有500万条记录。UserID对于所有记录都是唯一的 我有一个临时表,有两个相同的字段,大约有30k条记录。此外,没有重复的用户ID 对于临时表上的每条记录,我想从用户帐户中删除相应的记录 我可以运行一个简单的delete语句3万次。这将需要永远的运行。必须有一个非常简单的查询来遍历temp表。您

对于大多数人来说,这将是一个简单的问题,但我找不到答案,我们的开发人员也不会帮助他们使用sql。我完全是个业余爱好者

我有一个名为User_accounts的表,它有两个字段:UserID和Value。有500万条记录。UserID对于所有记录都是唯一的

我有一个临时表,有两个相同的字段,大约有30k条记录。此外,没有重复的用户ID

对于临时表上的每条记录,我想从用户帐户中删除相应的记录


我可以运行一个简单的delete语句3万次。这将需要永远的运行。必须有一个非常简单的查询来遍历temp表。您能帮助我吗?

您的delete语句可以一次性删除所有选定的ID,只要有一个合适的where子句,它可以引用另一个表,例如:

delete user_accounts u
where exists (
  select null
  from   temp_table t
  where  t.userid = u.userid
  );

此操作不需要游标,也不需要多次运行简单的delete语句。从用户_帐户中删除,其中用户ID在从临时文件中选择用户ID。您也可以在存在的地方使用。