答案 0 :(得分:2)
WITH t AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY col1, col2, col3) ORDER BY (id) rn
FROM mytable
)
DELETE
FROM t
WHERE rn > 1
答案 1 :(得分:1)
我可以提出一些简单的建议:
CREATE TABLE tmp_table AS
SELECT DISTINCT col1,col2,col3 FROM YourTable;
DELETE FROM YourTable;
INSERT INTO YourTable
SELECT * FROM tmp_table;
DROP TABLE tmp_table;
这将基本上使用临时表重新创建具有不同值的表。
注意:有更有效的方法可以做到这一点,但您没有指定您的DBMS,它可能会从一个更改为另一个。此解决方案适用于ANSI SQL
答案 2 :(得分:0)
java -jar your-jar-file.jar
如果您阅读有关Row_Number(),Rank(),DenseRank()
的更多信息,那就太好了