我有这样的表
Id Name Lang templateid
1 xxx ENGISH 1
2 xxx SPANISH 2
3 xxx ENGISH 1
4 xxx ENGISH 1
5 xxx ENGISH 1
6 xxx SPANISH 1
我想删除具有相同lang和templateid的重复记录。例如,templateid 1 + Lang ENGLISH不止一次重复。
删除重复记录并留下最新的记录即,Id 5是英语的最新记录。
任何建议都将不胜感激。
答案 0 :(得分:1)
MySQL
<强>查询强>
DELETE t2
FROM tbl t1
JOIN tbl t2 ON
(
t2.lang = t1.lang
AND t2.templateId=t1.templateId
AND t2.id < t1.id
);
<强> Fiddle Demo 强>
PostgreSQL
<强>查询强>
DELETE FROM tbl t1
WHERE id IN
(
SELECT t1.id
FROM tbl t1
JOIN tbl t2 ON
(
t2.lang = t1.lang
AND t2.templateId=t1.templateId
AND t2.id > t1.id
)
);
<强> Fiddle Demo 强>