我需要有关重复行的帮助。我使用以下方法从一个表中删除了重复的行
DELETE FROM names a
WHERE ROWID > (SELECT MIN(ROWID) FROM names b
WHERE b.name=a.name
AND b.age=a.age
);
它确实适用于那个特定的表,但我对另一个表做了同样的事情,每个医生都有重复的参考号,但不同的唯一代码。
doc_name ref_no unique_code
------------------------------
abcd 1010 1111
abcd 1010 1112
cdef 1011 1113
cdef 1011 1114
我的结果应如下所示:
doc_name ref_no unique_code
---------------------------
abcd 1010 1111
cdef 1011 1113
答案 0 :(得分:0)
你这样做了吗?
DELETE FROM names a
WHERE ROWID > (SELECT MIN(ROWID) FROM names b
WHERE b.doc_name=a.doc_name
AND b.ref_no=a.ref_no
)
试试这个
SELECT *
FROM doc_unique
WHERE (DIV_CD, DOC_NAME, B_DT, FT_NM, UNQ_CD, DESG_CD,
SPEC_CD) IN (SELECT DIV_CD, DOC_NAME, B_DT, FT_NM, UNQ_CD, DESG_CD,
SPEC_CD
FROM doc_unique
GROUP BY DIV_CD, DOC_NAME, B_DT, FT_NM, UNQ_CD, DESG_CD,
SPEC_CD HAVING COUNT(*) > 1)
答案 1 :(得分:0)
请尝试exists
delete from names a
where exists (
select *
from names b
where b.name = a.name
and b.age = a.age
and a.unique_code > b.unique_code
)
答案 2 :(得分:0)
您可以使用ROW_NUMBER()来检测重复的行并将其删除。
DELETE tblName
WHERE ROWID IN (
SELECT ROWID
FROM(
SELECT ROW_NUMBER() OVER (PARTITION BY doc_name, ref_no ORDER BY doc_name, ref_no) AS Rn
,doc_name
,ref_no
,unique_code
FROM tblName
)
WHERE Rn > 1
)