在SQL中使用rownum删除重复记录

在SQL中使用rownum删除重复记录,第1张

在SQL中使用rownum删除重复记录

使用

rowid

DELETe FROM table_name a WHERe EXISTS( SELECt 1      FROM table_name b     WHERe a.id = b.id       AND a.name = b.name       AND a.rowid > b.rowid )

当然,您也可以这样做

a.rowid < b.rowid
。该
rowid
所以你是否删除具有较大的行或较小的地址不要紧只是该行的物理地址。

但是,您的预期结果没有任何意义。

Expected Result :        ROWNUM         ID NAME    ---------- ---------- ----------  4          1 leo_1  5          2 leo_2  6          3 leo_3

rownum
结果集的总是在查询时分配。这意味着
rownum
在不同的查询中(或同一查询多次运行时)特定的行可能会以不同的值出现。
rownum
始终是顺序的,因此
rownum
在同一结果集中没有
rownum
1、2和3的值的情况下,结果集中永远不会有a的4
。无论您删除哪个重复行,您的结果都将是

预期结果 :

    ROWNUM         ID NAME---------- ---------- ----------         1          1 leo_1         2          2 leo_2         3          3 leo_3

但是这些

rownum
值是任意的。Oracle返回同样有效

预期结果 :

    ROWNUM         ID NAME---------- ---------- ----------         1          2 leo_2         2          3 leo_3         3          1 leo_1


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5003982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存