我有一个表格在MySQL的联系信息;
名,姓,address,等。
我想在这个表上运行一个查询,它将只返回、first、和姓氏组合的行,这些行多次出现在表中。
我不想将“复本”(只能是姓名的复本,但不包括地址或生日等其他信息)分组-
我想返回所有的“重复”行,这样我就可以查看结果并确定它们是否为dupes。这似乎是一件很简单的事情,但事实并非如此。
我能找到的每一个解决方案都是分组的,只给我一个计数(这对我需要对结果做什么没有什么用处),或者根本不起作用。
这种逻辑在查询中可能吗?我应该试着用Python或者别的什么来做这个吗?
发布于 2010-03-08 15:17:48
您应该能够在子查询中使用GROUP BY方法来完成此操作。
SELECT t.first_name, t.last_name, t.address
FROM your_table t
JOIN ( SELECT first_name, last_name
FROM your_table
GROUP BY first_name, last_name
HAVING COUNT(*) > 1
) t2
ON ( t.first_name = t2.first_name, t.last_name = t2.last_name )子查询返回存在多次的所有名称(first_name和last_name),JOIN返回与这些名称匹配的所有记录。
发布于 2010-03-08 15:20:08
您可以通过/拥有和一个子选择来对一个组进行操作。有点像
SELECT t.*
FROM Table t INNER JOIN
(
SELECT FirstName, LastName
FROM Table
GROUP BY FirstName, LastName
HAVING COUNT(*) > 1
) Dups ON t.FirstName = Dups.FirstName
AND t.LastName = Dups.LastName发布于 2010-03-08 15:21:15
select * from people
join (select firstName, lastName
from people
group by firstName, lastName
having count(*) > 1
) dupe
using (firstName, lastName)https://stackoverflow.com/questions/2402259
复制相似问题