Sar*_* AH 3 sql oracle sql-delete
我创建了一个查询来删除表中的重复行.我试图这样做,但输出是"太多的价值"
DELETE FROM Employeetest
WHERE employeeid IN (SELECT
employeetest.*,
ROW_NUMBER() OVER (PARTITION BY employeeid ORDER BY employeeid) AS rownumber
FROM
employeetest
HAVING
(rownumber > 1));
Run Code Online (Sandbox Code Playgroud)
我也做了
SELECT
employeetest.*,
ROW_NUMBER() OVER (PARTITION BY employeeid ORDER BY employeeid) AS rownumber
FROM
employeetest
Run Code Online (Sandbox Code Playgroud)
然后
DELETE * FROM employeetest;
Run Code Online (Sandbox Code Playgroud)
它不起作用
你标记为plsql,我明白你的DB
是Oracle
.所以你可以使用rowid pseudocolumn
如下:
delete Employeetest t1
where rowid <
(
select max(rowid)
from Employeetest t2
where t2.employeeid = t1.employeeid
);
Run Code Online (Sandbox Code Playgroud)
如果目标是删除所有重复的employeeid
值.
PS不可能以这种方式删除Delete * from employeetest where ...
,但使用Delete from employeetest where ...
或是Delete employeetest where ...
可能的选项.