删除oracle中的重复行

时间:2012-07-30 15:32:04

标签: oracle oracle11g

以下查询不应该可以正常删除oracle中的重复行

SQL> delete from sessions o 
      where 1<=(select count(*) 
                  from sessions i 
                 where i.id!=o.id 
                   and o.data=i.data);

似乎删除了所有重复行!! (我希望保持强硬态度)

1 个答案:

答案 0 :(得分:2)

您的陈述不起作用,因为您的表格至少有一行,其中两个IDDATA分享DATA的相同值。

虽然您的意图可能是ID ID之间的DATA ID的不同值,但您的SQL 实际上是以集合为基础的:&#34;整体看我的桌子。如果表格中有任何行,COUNT(*)是相同的,但DELETE是不同的(即内部{{1}}是大于0的任何行),然后{{1}}表格中的每一行。&#34;

您可能正在尝试特定的基于行的逻辑,但您的语句是大图(基于集合)。没有任何内容可以单独列出重复的行,例如Ollie已经链接到的解决方案。