Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
以下查询不应该适用于删除 oracle 中的重复行吗
SQL> delete from sessions o where 1<=(select count(*) from sessions i where i.id!=o.id and o.data=i.data);
似乎删除了所有重复的行!(我希望保持1强硬)
您的声明不起作用,因为您的表至少有一行,其中两个不同ID的 ' 共享相同的值DATA。
ID
DATA
尽管您的意图可能是查找DATA IDby的不同值ID,但您的 SQL所说的实际上是基于集合的:“将我的表视为一个整体。如果表中有任何行DATA相同,但ID是不同的(即,innerCOUNT(*)大于 0),然后DELETE是表中的每一行。”
COUNT(*)
DELETE
您可能正在尝试特定的、基于行的逻辑,但您的陈述是全局的(基于集合的)。例如,其中没有任何内容可以挑出重复的行,例如 Ollie 所链接的解决方案。