查找不完全相同的重复行

时间:2012-09-25 10:58:32

标签: sql oracle duplicates

我可以选择具有相同列值的所有行(例如SSN字段),但可以分别显示它们。 ?

我已经搜索过这个答案,但他们都有“count(*)和group by”部分,要求行完全相同。

4 个答案:

答案 0 :(得分:2)

试试这个:

SELECT A, B FROM MyTable
WHERE A IN
(
    SELECT A FROM MyTable GROUP BY A HAVING COUNT(*)>1
)

我已经完成了SQL服务器。但希望这就是你需要的东西

enter image description here

答案 1 :(得分:2)

这是另一种方法,它只引用一次表,使用分析函数而不是子查询来获取重复计数它可能更快;它也可能不会,具体取决于具体的数据。

SELECT * FROM (
  SELECT col1, col2, col3, ssn, COUNT(*) OVER (PARTITION BY ssn) ssn_dup_count
)
WHERE ssn_dup_count > 1
ORDER BY ssn_dup_count DESC

答案 2 :(得分:0)

SELECT
    *
FROM
    MyTable
WHERE
    EXISTS
    (
        SELECT
            NULL
        FROM
            MyTable MT
        WHERE
            MyTable.SameColumnName = MT.SameColumnName
        AND MyTable.DifferentColumnName <> MT.DifferentColumnName)

答案 3 :(得分:0)

这将获取所需数据并按顺序显示,以便我们可以一起查看分组数据。

SELECT * FROM TABLENAME
WHERE SSN  IN
(
    SELECT SSN FROM TABLENAMEGROUP BY SSN HAVING COUNT(SSN)>1
)

ORDER BY SSN 

此处SSN是用于进行类似值检查的列名。