以下查询不应该可以正常删除oracle中的重复行
SQL> delete from sessions o
where 1<=(select count(*)
from sessions i
where i.id!=o.id
and o.data=i.data);
似乎删除了所有重复行!! (我希望保持强硬态度)
答案 0 :(得分:2)
您的陈述不起作用,因为您的表格至少有一行,其中两个ID
个DATA
分享DATA
的相同值。
虽然您的意图可能是ID
ID
之间的DATA
ID
的不同值,但您的SQL 说实际上是以集合为基础的:&#34;整体看我的桌子。如果表格中有任何行,COUNT(*)
是相同的,但DELETE
是不同的(即内部{{1}}是大于0的任何行),然后{{1}}表格中的每一行。&#34;
您可能正在尝试特定的基于行的逻辑,但您的语句是大图(基于集合)。没有任何内容可以单独列出重复的行,例如Ollie已经链接到的解决方案。