假设我有以下表格:
表A
a_name | age | country
Jordan | 5 | Germany
Jordan | 6 | Spain
Molly | 6 | Spain
Paris | 7 | France
John | 7 | Saudi Arabia
John | 5 | Saudi Arabia
John | 6 | Spain
表B
id (auto increment primary key)
| age | country | group_num (initially null)
1 | 5 | Germany |
2 | 6 | Spain |
3 | 7 | France |
4 | 7 | Spain |
5 | 8 | France |
6 | 9 | France |
7 | 2 | Mexico |
8 | 7 | Saudi Arabia |
9 | 5 | Saudi Arabia |
我希望能够进行某种选择/更新,以便能够获得“group_num”列的以下值:
表B
id (auto increment primary key)
| age | country | group_num
1 | 5 | Germany | 1
2 | 6 | Spain | 1
3 | 7 | France | 1
4 | 7 | Spain |
5 | 7 | France | 2
6 | 9 | France |
7 | 2 | Mexico |
8 | 7 | Saudi Arabia | 1
9 | 5 | Saudi Arabia | 1
group_num 是根据以下标准分配的:
1) Places person "a_name" went.
2) Whether other people visited that same country. (regardless of age).
id 的 1,2,3,8,9 都具有相同的 groupId 的原因是因为上述两个条件,Jordan、Molly 和 Paris 都发生了某种联系。(他们都去了西班牙)和其他国家,即德国被约旦访问过,约旦也访问过西班牙,所以它有相同的group_num。约翰访问了沙特阿拉伯,他也访问了西班牙,因此它具有相同的 group_num。
是否有一些 SQL 查询或查询(可能涉及或可能不涉及创建其他“互补”表以获得上面显示的所需结果? (即,如果 group_num 应该首先填充 auto_incrementing 值,如“id”,则可以),然后在必要时稍后更新。(可以为当前显示为“(空)”的其他值字段设置非空值
游标/迭代非常慢......以下是我填写这些值的步骤,使用游标的过程非常慢,如果我能摆脱它,那就太好了:
- 对于表 A,我们看到 Jordan 在 5 岁时访问了德国。(表 B 中 [5,Germany] 的 Group_Num 更新为 1)。
- 乔丹在 6 岁时访问西班牙。([6,Spain] 的 Group Num 更新为 1,以显示其与 Jordan 访问西班牙的同一个人的分组相同)
- 莫莉 6 岁时访问西班牙([6,Spain] 的 group_num 更新为 1,因为即使它是不同的人,相同的年龄/国家对被击中)
- 巴黎在 7 岁时访问了法国(表 B 中的 group_num 更新为 2,因为她是一个不同的人,访问了一个完全不同的国家,无论年龄大小。
- 约翰在 7 岁时访问了沙特阿拉伯(表 B 中 [7,Saudi Arabia] 的 group_num 更新为年龄+国家对中的 3)
- 约翰在 5 岁时访问沙特阿拉伯(表 B 中 [5,Saudi Arabia] 的 group_num 更新为 3 年龄+国家对,因为它仍然是约翰)
- 约翰在 6 岁时访问了西班牙([6,Spain] 的 group_num 已经是 1.. 约旦之前去过那里,可能有一些分组...所以 group_num 代表约翰访问过的所有地方 [6, Spain], [5, Saudi阿拉伯]和[7,沙特阿拉伯]都更新为1