sql数据库中的两个表的记录进行比较,并写入结果数据

时间:2023-01-20 08:51:49
sql数据库中的两个表的记录进行比较!sql数据库中有A表和B表,字段结构相同,字段名称为NO,1,2,3,4,5,6,7,8,9,10等11个字段。A,B表中的数据是有a,b,c字符组成,其中A表中的记录是由单个字符构成(即a,b,c),B表中的记录是由单个或双个或三个字符构成(如a,b,c,ab,bc,ac,abc)。现比较A,B表的记录,如果A表的数据包含在B表中,则视为相同,统计A,B表中的字段有几个相同,并将统计的结果写入A表新增加的字段中。 
如A表 
NO  1  2  3  4  5  6  7  8  9  10  
1   a  c  a  b  a  b  c  c  a  b 
2   a  c  a  b  a  b  c  c  a  b 
3   a  c  a  b  a  b  c  c  a  b 
4   a  c  a  b  a  b  c  c  a  b 
.......... 
10000 

B表 
NO  1   2   3   4   5   6   7   8   9    10  
1   ab  ab  bc  bc  abc ab  ab  ac  abc  ab 
2   ab  ab  bc  bc  abc ab  ab  ac  abc  ab  
3   ab  ab  bc  bc  abc ab  ab  ac  abc  ab 
4   ab  ab  bc  bc  abc ab  ab  ac  abc  ab 
....... 
800 
得到的A表结果(共有7个字段相同) 
NO  1  2  3  4  5  6  7  8  9  10  11  12  13  14...810 
1   a  c  a  b  a  b  c  c  a  b   7  7  7  7    ...
2   a  c  a  b  a  b  c  c  a  b   7  7  7  7    ...
3   a  c  a  b  a  b  c  c  a  b   7  7  7  7    ...
4   a  c  a  b  a  b  c  c  a  b   7  7  7  7    ...
....... 
10000 

A表有1万条记录,B表中有800条记录,A表中的每条记录和B表中的每条记录进行比较,A表的每条记录和B表800条记录比较后把比较结果写到A表记录新增的800条字段里进行存储。    

在这里我只是举例,所以用了相同的数据。看一看哪位大侠能够写出SQL程序!谢谢! 

8 个解决方案

#1


sql数据库中的两个表的记录进行比较,并写入结果数据

#2


看得有点晕....

#3


帮顶。

#4


    呵呵,是我写得不够清楚么,那我重举例,不用相同的数据!应该就清楚了!
    sql数据库中的两个表的记录进行比较!sql数据库中有A表和B表,字段结构相同,字段名称为NO,1,2,3,4,5,6,7,8,9,10等11个字段。A,B表中的数据是有a,b,c字符组成,其中A表中的记录是由单个字符构成(即a,b,c),B表中的记录是由单个或双个或三个字符构成(如a,b,c,ab,bc,ac,abc)。现比较A,B表的记录,如果A表的数据包含在B表中,则视为相同,统计A,B表中的字段有几个相同,并将统计的结果写入A表新增加的字段中。 
    也就是说A表的每条记录要和B表的每条记录进行比较,假设A表的第一条记录和B表的所有的800条记录进行比较,即得出800个结果,得出的结果写入A表第一条记录的后面,包括原来A表的11个字段加上得出的结果共有11+800=811个字段了。A表的其他记录如此依次和B表的记录进行比较,就可以得出最终的结果!
    或者换一种方式,即A表的所有记录依次和B表的第一条记录开始比较,就得到一个字段(字段11)的结果,写入A表中。然后在和B表的第二条记录开始比较,得到字段12的结果,写入A表中,如此类推,直到和B表的最后一条记录比较完成,得到最后一个字段811。

如A表
NO  1  2   3   4   5    6   7   8   9    10  
1   a  c   b   b   c    a   c   c   b    a
2   b  a   b   c   b    b   a   b   c    a 
3   a  c   a   b   c    b   b   c   a    c 
4   c  c   a   b   a    b   c   a   c    b 
.......... 
10000 

B表
NO  1   2  3   4   5    6   7   8   9    10  
1  bc  ab  bc  ac  abc  ac  ab  bc  ac   ab 
2  ac  abc ab  bc  ac   ab  ab  bc  abc  ab  
3  ab  bc  abc ab  abc  ac  bc  ac  abc  ac 
4  abc ab  bc  bc  ac   ab  ab  ab  ac   bc 
....... 
800 

得到的A表结果(共有7个字段相同) 
NO  1   2  3   4   5    6   7   8   9    10  11  12  13  14...810 
1   a   c  b   b   c    a   c   c   b    a   5   9   10   5    ... 
2   b   a  b   c   b    b   a   b   c    a   9   8   5    8    ... 
3   a   c  a   b   c    b   b   c   a    c   4   9   9    7    ... 
4   c   c  a   b   a    b   c   a   c    b   4   8   7    7    ... 
....... 
10000 

解释:
    A表的第一条记录和B表的前面4条记录比较后的结果为5,9,10,5  写入A表的11,12 ,13,14字段里,A表的第二条记录和B表的前面4条记录比较后的结果为9,8,5,8 写入A表的11,12 ,13,14字段里, A表的第三条记录和B表的前面4条记录比较后的结果为4,9,9,7写入A表的11,12 ,13,14字段里,A表的第二条记录和B表的前面4条记录比较后的结果为4,8,7,7 写入A表的11,12 ,13,14字段里。
    或者用我说的第二个方式,先得出字段11的值,然后是字段12的值,依此类推...

A表有1万条记录,B表中有800条记录,A表中的每条记录和B表中的每条记录进行比较,A表的每条记录和B表800条记录比较后把比较结果写到A表记录新增的800条字段里进行存储。    

#5


还是有点晕,那个比较怎么比的

#6


可以看我的“解释”,如A表的第一个记录共有十字段的数值,它的值与B表第一个记录对应字段值比较。只要B表的字母包好有A表的字母,则表示值相同,如下计算
A表
NO  1  2  3  4  5    6  7  8   9    10  
1   a  c  b  b  c    a  c  c   b    a 

B表 
NO  1  2   3  4    5    6  7   8  9    10  
1  bc  ab  bc  ac  abc  ac  ab  bc  ac  ab 
两个表中的两条记录,B表3,5,6,8,10字段的字母值与A表3,5,6,8,10字段有相同的字母,表示这5个字段值相同。因此,这两条记录有5个字段相同,就把“5”写入A表的字段11中。依此类推A表的第一条记录再与B表的第二条比较得到9个字段相同,所以就把“9”写入A表的字段12中,依此类推就得到A表的字段13的值为10,字段14的值为5。A表的第一条记录与B表的800条记录比较完成后,就到A表的第二条记录,依此类推,直到第10000条记录完成。
    呵呵,不知道表述清楚了没有。

#7


有没有高手,帮忙回答一下!谢谢!

#8


自己顶

#1


sql数据库中的两个表的记录进行比较,并写入结果数据

#2


看得有点晕....

#3


帮顶。

#4


    呵呵,是我写得不够清楚么,那我重举例,不用相同的数据!应该就清楚了!
    sql数据库中的两个表的记录进行比较!sql数据库中有A表和B表,字段结构相同,字段名称为NO,1,2,3,4,5,6,7,8,9,10等11个字段。A,B表中的数据是有a,b,c字符组成,其中A表中的记录是由单个字符构成(即a,b,c),B表中的记录是由单个或双个或三个字符构成(如a,b,c,ab,bc,ac,abc)。现比较A,B表的记录,如果A表的数据包含在B表中,则视为相同,统计A,B表中的字段有几个相同,并将统计的结果写入A表新增加的字段中。 
    也就是说A表的每条记录要和B表的每条记录进行比较,假设A表的第一条记录和B表的所有的800条记录进行比较,即得出800个结果,得出的结果写入A表第一条记录的后面,包括原来A表的11个字段加上得出的结果共有11+800=811个字段了。A表的其他记录如此依次和B表的记录进行比较,就可以得出最终的结果!
    或者换一种方式,即A表的所有记录依次和B表的第一条记录开始比较,就得到一个字段(字段11)的结果,写入A表中。然后在和B表的第二条记录开始比较,得到字段12的结果,写入A表中,如此类推,直到和B表的最后一条记录比较完成,得到最后一个字段811。

如A表
NO  1  2   3   4   5    6   7   8   9    10  
1   a  c   b   b   c    a   c   c   b    a
2   b  a   b   c   b    b   a   b   c    a 
3   a  c   a   b   c    b   b   c   a    c 
4   c  c   a   b   a    b   c   a   c    b 
.......... 
10000 

B表
NO  1   2  3   4   5    6   7   8   9    10  
1  bc  ab  bc  ac  abc  ac  ab  bc  ac   ab 
2  ac  abc ab  bc  ac   ab  ab  bc  abc  ab  
3  ab  bc  abc ab  abc  ac  bc  ac  abc  ac 
4  abc ab  bc  bc  ac   ab  ab  ab  ac   bc 
....... 
800 

得到的A表结果(共有7个字段相同) 
NO  1   2  3   4   5    6   7   8   9    10  11  12  13  14...810 
1   a   c  b   b   c    a   c   c   b    a   5   9   10   5    ... 
2   b   a  b   c   b    b   a   b   c    a   9   8   5    8    ... 
3   a   c  a   b   c    b   b   c   a    c   4   9   9    7    ... 
4   c   c  a   b   a    b   c   a   c    b   4   8   7    7    ... 
....... 
10000 

解释:
    A表的第一条记录和B表的前面4条记录比较后的结果为5,9,10,5  写入A表的11,12 ,13,14字段里,A表的第二条记录和B表的前面4条记录比较后的结果为9,8,5,8 写入A表的11,12 ,13,14字段里, A表的第三条记录和B表的前面4条记录比较后的结果为4,9,9,7写入A表的11,12 ,13,14字段里,A表的第二条记录和B表的前面4条记录比较后的结果为4,8,7,7 写入A表的11,12 ,13,14字段里。
    或者用我说的第二个方式,先得出字段11的值,然后是字段12的值,依此类推...

A表有1万条记录,B表中有800条记录,A表中的每条记录和B表中的每条记录进行比较,A表的每条记录和B表800条记录比较后把比较结果写到A表记录新增的800条字段里进行存储。    

#5


还是有点晕,那个比较怎么比的

#6


可以看我的“解释”,如A表的第一个记录共有十字段的数值,它的值与B表第一个记录对应字段值比较。只要B表的字母包好有A表的字母,则表示值相同,如下计算
A表
NO  1  2  3  4  5    6  7  8   9    10  
1   a  c  b  b  c    a  c  c   b    a 

B表 
NO  1  2   3  4    5    6  7   8  9    10  
1  bc  ab  bc  ac  abc  ac  ab  bc  ac  ab 
两个表中的两条记录,B表3,5,6,8,10字段的字母值与A表3,5,6,8,10字段有相同的字母,表示这5个字段值相同。因此,这两条记录有5个字段相同,就把“5”写入A表的字段11中。依此类推A表的第一条记录再与B表的第二条比较得到9个字段相同,所以就把“9”写入A表的字段12中,依此类推就得到A表的字段13的值为10,字段14的值为5。A表的第一条记录与B表的800条记录比较完成后,就到A表的第二条记录,依此类推,直到第10000条记录完成。
    呵呵,不知道表述清楚了没有。

#7


有没有高手,帮忙回答一下!谢谢!

#8


自己顶