# 查询哪些数据有重复SELECT*FROM(SELECT*,
ROW_NUMBER()OVER(PARTITIONBY invoice_no, order_no ORDERBY id)as row_num
FROM table_name
) o
WHERE o.row_num >1;#删除重复数据(保留一条)DELETEFROM table_name
WHERE id IN(SELECT id
FROM(SELECT id,
ROW_NUMBER()OVER(PARTITIONBY invoice_no, order_no ORDERBY id)as rn
FROM table_name
) t
WHERE t.rn >1);
2、方案2
SELECT*FROM
table_name a
WHERE
a.id IN(select b.id from(SELECTMAX( c.id ) id FROM table_name c GROUPBY invoice_no, order_no HAVINGcount( invoice_no )>1) b);deleteFROM
table_name a
WHERE
a.id IN(select b.id from(SELECTMAX( c.id ) id FROM table_name c GROUPBY invoice_no, order_no HAVINGcount( invoice_no )>1) b);