繁体   English   中英

选择第一个表中与第二个表中的每个记录匹配的所有记录

[英]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,但也没有找到它的用途。 你能帮我解决这个问题吗?

我看不到您从哪里生成输出 ID 字段 - 或者您从哪里选择数据字段,所以这是最好的猜测。

SELECT Table1.ID_1, Table1.Number, Table1.[Some other data]
FROM Table1
WHERE (Table1.Number In (SELECT Number From Table2))
ORDER BY Table1.Number, Table1.ID_1;

看起来像这样:

输出

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);
  1. 查询(带 s ),需要删除重复项
  2. 窗口函数count(tbl1.Number) OVER(PARTITION BY Number)通过匹配数字的计数为我们排序结果
  3. 需要@rownum变量来计算行数
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM