在SQL中复制行输出的值太多

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)

它不起作用

Bar*_*han 5

你标记为plsql,我明白你的DBOracle.所以你可以使用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 ...可能的选项.