在sqlite中查找重复的列值

问题描述 投票:0回答:3

我已在表中插入一些值

DataTab

SomeId: Integer     => Autogenerated primary key.
DataId: Guid
DataNumber: Integer
DataType: varchar

以上是我的表格中的列,我想查找该表格是否包含重复的

DataId
值。 我使用数据库已经很长时间了。现在我可以弄清楚简单的查询。但我发现这有些困难。

我尝试了以下查询,这是正确的吗?

SELECT * from (Select * from DataTab) AS X 
where DataId= X.DataId AND SomeId!=X.SomeId
database sqlite
3个回答
150
投票
SELECT DataId, COUNT(*) c FROM DataTab GROUP BY DataId HAVING c > 1;

3
投票

我已经在我的应用程序中使用了它。它正在根据您的查询运行

SELECT a.* 
FROM CENTERDETAILS a 
JOIN 
(SELECT IPADDR, MACID, COUNT(*) 
    FROM CENTERDETAILS  
    GROUP BY IPADDR, MACID 
    HAVING count(*) > 1
) b ON a.IPADDR = b.IPADDR OR a.MACID = b.mac 
ORDER BY a.MACID

0
投票

我尝试将我在OP中读到的原始方法转换为可行的方法,并且与

GROUP BY
HAVING
的组合相比,相当容易记住。

SELECT *
FROM DataTab a 
JOIN DataTab b ON
  a.DataId = b.DataId
WHERE
  a.SomeId <> b.SomeId

虽然它可能比 Jwalin Shah 的答案效率低。

© www.soinside.com 2019 - 2024. All rights reserved.