CREATE TABLE temp_emp AS SELECT DISTINCT * FROM employee;
TRUNCATE TABLE employee;
INSERT INTO employee SELECT * FROM temp_emp;
DELETE FROM employee e2
WHERE ROWID NOT IN (
SELECT MAX(e1.ROWID)
FROM employee e1
WHERE e1.emp_id = e2.emp_id
AND e1.emp_name = e2.emp_name
AND e1.salary = e2.salary
);
或簡化為:
DELETE FROM employee e2
WHERE ROWID < (
SELECT MAX(e1.ROWID)
FROM employee e1
WHERE e1.emp_id = e2.emp_id
AND e1.emp_name = e2.emp_name
AND e1.salary = e2.salary
);
DELETE FROM employee
WHERE ROWID NOT IN (
SELECT MAX(ROWID)
FROM employee
GROUP BY emp_id, emp_name, salary
);
ROWID,編碼資料檔案號、區塊號、列號。ROWID 必異,故可用 MAX/MIN(ROWID) 當作保留鍵。EMP_ID EMP_NAME SALARY
1 sunshine 10000
3 xyz 30000
2 semon 20000