如何解决查询多个表以查找重复的一对一关系按不同表中的多列分组
我有两张桌子
表 1:
表2:
table1_id | columnB |
---|---|
1 | row1 |
2 | row2 |
3 | row1 |
是否可以通过单个查询从 table1 中获取 id,其中 columnA 中的重复值在 columnB 中也有重复值:
就像在这个例子中一样,table1 中的 id 1 和 3 在 columnA 和 columnB 中都有重复的值
解决方法
SELECT GROUP_CONCAT(table1.id)
FROM table1
JOIN table2 ON table1.id = table2.table1_id
GROUP BY table1.columnA,table2.columnB
HAVING COUNT(*) > 1
,
如果可以将同一组中的 ID 用作逗号分隔的列,那么您可以使用以下查询(这将确保两个表对于给定的 columnA 或 columnB 值具有相同数量的重复 ID):
架构(MySQL v5.7)
create table table1 (id int,columnA varchar(20));
insert into table1 values(1,'one');
insert into table1 values(2,'two');
insert into table1 values(3,'one');
create table table2 (table1_id int,columnB varchar(20));
insert into table2 values(1,'one');
insert into table2 values(2,'two');
insert into table2 values(3,'one');
查询 #1
select a.ids from
(SELECT GROUP_CONCAT(id) ids
FROM table1
GROUP BY columnA
HAVING COUNT(*) > 1) a
inner join
(SELECT GROUP_CONCAT(table1_id) table1_ids
FROM table2
GROUP BY columnB
HAVING COUNT(*) > 1) b
on a.ids=b.table1_ids;
id |
---|
1,3 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。