在mysql中成对查找重复项
我想知道如何在两列合并的表中找到重复值 假设我的表中有id | | name | | |父| u name | | region | | dob等字段 现在,如何查找结果集,例如:在mysql中成对查找重复项,mysql,Mysql,我想知道如何在两列合并的表中找到重复值 假设我的表中有id | | name | | |父| u name | | region | | dob等字段 现在,如何查找结果集,例如: .ie我想找到三列相同的所有行。如果您使用的是MySql 8.0,您可以使用窗口功能。下面使用该函数的查询将返回精确的输出: select t1.* from your_table t1 join ( select name, father_name, region from your_table
.ie我想找到三列相同的所有行。如果您使用的是MySql 8.0,您可以使用窗口功能。下面使用该函数的查询将返回精确的输出:
select t1.*
from your_table t1
join
(
select name, father_name, region
from your_table
group by name, father_name, region
having count(*) >= 3
) t2 on t1.name = t2.name
and t1.father_name = t2.father_name
and t1.region = t2.region
select id, name, fatherName, country from (
select id,
name,
fatherName,
country,
count(id) over (partition by name, fatherName, country) cnt
from Tbl
) `a` where cnt > 1;
实际上,我也多次需要这种类型的功能,其中我需要比较除自动递增主键id列之外具有相同值的所有列 所以,在这种情况下,我总是使用关键字分组 例如
SELECT A.*
FROM YourTable A
INNER JOIN (SELECT name,city,state
FROM YourTable
GROUP BY name,city,state
HAVING COUNT(*) > 1) B
ON A.name = B.name AND A.city = B.city AND A.state = B.state
可以附加要比较的列数
希望,这可能对您的情况也有帮助。当我从group by中删除id时,它给出了1055-SELECT list的表达式1不在group by子句中,并且包含未聚合的列“db.candidate_list.id”,它在功能上不依赖group by子句中的列;这与sql_mode=only_full_group_by不兼容事实上我想要名称父名和城市名中的重复项我只想打印记录的id以便识别它们我更新了答案。内部连接获取Revavent值,外部选择获取完整记录。我之前的评论是错误的,顺便说一句count*>1应该是count*>2以检索三列相同的内容。您的意思是3列记录,而不是3列可能的重复,这与@juergend已经给出的答案有什么不同?我没有看到他的答案,我刚刚看到了这个问题,并发布了我经常使用的sql查询。好的,但这看起来像是复制粘贴。虽然您可能没有看到,但您的答案并没有给这个问题带来任何新的内容。另外,现在我看到了他的答案,我注意到两个sql查询都是不同的。如果已经发布了一个正确答案,那么没有必要发布他们的答案。我刚刚分享了我的答案。除了列名(在您的情况下,列名甚至与OPs列不匹配)之外,它们有什么不同?