![](/img/trans.png)
[英]Join two tables where all child records of first table match all child records of second table
[英]Select all the records in the first table that match each of the records in the second
我正在使用 Access 数据库并有两个表:
ID_1 | 数字 | 其他一些数据 |
---|---|---|
1 | 1 | 数据 |
2 | 2 | 数据 |
3 | 3 | 数据 |
4 | 4 | 数据 |
5 | 3 | 数据 |
6 | 1 | 数据 |
7 | 2 | 数据 |
8 | 3 | 数据 |
9 | 1 | 数据 |
10 | 1 | 数据 |
11 | 2 | 数据 |
12 | 3 | 数据 |
13 | 4 | 数据 |
14 | 1 | 数据 |
15 | 2 | 数据 |
16 | 3 | 数据 |
17 | 4 | 数据 |
18 | 3 | 数据 |
19 | 3 | 数据 |
ID_2 | 数字 | 其他一些数据 |
---|---|---|
1 | 3 | 数据 |
2 | 1 | 数据 |
3 | 2 | 数据 |
4 | 3 | 数据 |
5 | 2 | 数据 |
如您所见,两个表都有重复的数据。 我需要一个查询来选择第一个表中与第二个表中的每个记录匹配的所有记录,它们与 Number 字段相关。 这些记录不重复也是必要的(即,查询在选择时不重复值)。 对于给定的示例,我应该得到以下结果:
ID | ID_1 | 数字 | 其他一些数据 |
---|---|---|---|
1 | 3 | 3 | 数据 |
2 | 5 | 3 | 数据 |
3 | 8 | 3 | 数据 |
4 | 12 | 3 | 数据 |
5 | 16 | 3 | 数据 |
6 | 18 | 3 | 数据 |
7 | 19 | 3 | 数据 |
8 | 1 | 1 | 数据 |
9 | 6 | 1 | 数据 |
10 | 9 | 1 | 数据 |
11 | 10 | 1 | 数据 |
12 | 14 | 1 | 数据 |
13 | 2 | 2 | 数据 |
14 | 7 | 2 | 数据 |
15 | 11 | 2 | 数据 |
16 | 15 | 2 | 数据 |
我在想也许我可以使用 Join,但我仍然不知道如何; 试过Where,但也没有找到它的用途。 你能帮我解决这个问题吗?
MySql 数据库数据结构
create table tbl1(ID_1 serial, Number int);
create table tbl2(ID_2 serial, Number int);
insert into tbl1(Number) values (1),(2),(3),(4),(3),(1),(2),(3),(1),(1),(2),(3),(4),(1),(2),(3),(4),(3),(3);
insert into tbl2(Number) values (3),(1),(2),(3),(2);
with s as (select distinct Number from tbl2),
f as (select ID_1,tbl1.Number from tbl1 left join s on
(tbl1.Number=s.Number) where s.Number is not null order by
count(tbl1.Number) OVER(PARTITION BY Number) desc)
select @rownum := @rownum + 1 AS ID,ID_1,Number from f, (SELECT @rownum := 0) r;
结果
+------+------+--------+
| ID | ID_1 | Number |
+------+------+--------+
| 1 | 3 | 3 |
| 2 | 5 | 3 |
| 3 | 8 | 3 |
| 4 | 12 | 3 |
| 5 | 16 | 3 |
| 6 | 18 | 3 |
| 7 | 19 | 3 |
| 8 | 1 | 1 |
| 9 | 6 | 1 |
| 10 | 9 | 1 |
| 11 | 10 | 1 |
| 12 | 14 | 1 |
| 13 | 2 | 2 |
| 14 | 7 | 2 |
| 15 | 11 | 2 |
| 16 | 15 | 2 |
+------+------+--------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.