Sử dụng ROW_NUMBER
chức năng phân tích để tìm các hàng không phải là hàng mới nhất trong mỗi nhóm và sau đó bạn có thể sử dụng ROWID
cột giả để tương quan với trong DELETE
:
DELETE FROM tmp_data
WHERE ROWID IN (
SELECT rid
FROM (
SELECT ROWID As rid,
ROW_NUMBER() OVER (
PARTITION BY col_2, col_3, col_6
ORDER BY col_4 DESC
) AS rn
FROM tmp_data
)
WHERE rn > 1
)
Xóa 22 hàng.
db <> fiddle tại đây