| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2049 人关注过本帖
标题:两个数据表多列比较如何用SQL语句完成,急盼高手指点,不甚感激!
只看楼主 加入收藏
Dlsongzhi84
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-7-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
两个数据表多列比较如何用SQL语句完成,急盼高手指点,不甚感激!
有2个数据表[表一](表一中一共有1107568条记录)和[表二]
都有6列数据分别为NO1 NO2 NO3 NO4 NO5 NO6
[表一]
NO1 NO2 NO3 NO4 NO5 NO6
01  02  03  04  05  06  
...
09  11  15  19  21  30
07  12  18  19  22  28
03  04  18  22  24  29
04  09  10  18  29  32
05  07  10  14  17  25
05  08  10  15  23  26
...
...(表中一共有1107568条记录,已经建立好了不会改变的)
[表二]
NO1 NO2 NO3 NO4 NO5 NO6
03  07  13  23  27  30
07  13  17  26  32  33
10  11  13  16  19  30
10  19  20  21  23  32
02  05  11  26  30  32
01  02  14  23  28  29
08  12  20  22  30  33
02  15  19  24  31  32
...
...(表中现有1060条记录,以后有增加)

步骤A:
    把[表一]里1107568条的六个列数据NO1 NO2 NO3 NO4 NO5 NO6分别和[表二]里的6列NO1 NO2 NO3 NO4 NO5 NO6逐一比较,
一个数都不相同的记录数记作“R0”
     1个数相同的记录数记作“R1”
     2个数相同的记录数记作“R2”
     3个数相同的记录数记作“R3”
     4个数相同的记录数记作“R4”
     5个数相同的记录数记作“R5”
     6个数相同的记录数记作“R6”
步骤B:求得R0 R1 R2 R3 R4 R5 R6的记录写到表[表一]里([表一]里要创建增加的列R0 R1 R2 R3 R4 R5 R6)
现在的问题是
一、如何把[表一]里1107568条的六个列数据NO1 NO2 NO3 NO4 NO5 NO6分别和[表二]里的6列NO1 NO2 NO3 NO4 NO5 NO6逐一比较,
二、求得R0 R1 R2 R3 R4 R5 R6的记录写到表[表一]里([表一]里创建增加的列R0 R1 R2 R3 R4 R5 R6) ,请专家帮忙解决,谢谢!
我的邮箱是1449801931@,急盼得到你的帮助。
搜索更多相关主题的帖子: SQL 语句 数据 感激 
2010-07-18 13:20
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:6 
虽然这个可以用SQL写出来结果,但是得到的结果将会有:1107568*1060条记录,而且比较结果根本不可写到表1中.

[ 本帖最后由 cnfarer 于 2010-7-18 15:10 编辑 ]

★★★★★为人民服务★★★★★
2010-07-18 15:06
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
select t1.*,(case (case when t1.no1=t2.no1 then 1 else 0 end + case when t1.no2=t2.no2 then 1 else 0 end + case when t1.no3=t2.no3 then 1 else 0 end + case when t1.no4=t2.no4 then 1 else 0 end + case when t1.no5=t2.no5 then 1 else 0 end + case when t1.no6=t2.no6 then 1 else 0 end ) when 0 then 'R0' when 1 then 'R1' when 2 then 'R2' when 3 then 'R3' when 4 then 'R4' when 5 then 'R5' when 6 then 'R6' end) as r from 表一 t1, 表二 t2

★★★★★为人民服务★★★★★
2010-07-18 15:39
absentlyh
Rank: 2
等 级:论坛游民
帖 子:105
专家分:14
注 册:2006-6-5
收藏
得分:6 
update 门诊补偿
set 门诊总费用=b.门诊总费用
from 门诊补偿, mz,
(select 医疗证号,患者姓名,门诊总费用=sum(门诊总费用)  from mz group by 医疗证号,患者姓名)b
where 门诊补偿.医疗证号=mz.医疗证号

这样应该可以的 谢谢了

我就是我!我自信,我成功!
2010-07-18 22:09
absentlyh
Rank: 2
等 级:论坛游民
帖 子:105
专家分:14
注 册:2006-6-5
收藏
得分:0 
回复 3楼 cnfarer
update 门诊补偿
set 门诊总费用=b.门诊总费用
from 门诊补偿, mz,
(select 医疗证号,患者姓名,门诊总费用=sum(门诊总费用)  from mz group by 医疗证号,患者姓名)b
where 门诊补偿.医疗证号=mz.医疗证号


这样应该可以的  谢谢帮助

我就是我!我自信,我成功!
2010-07-18 22:10
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:6 
不明白为什么要这样做 比较不同的 就有可能存在1107568*1060条记录 还不用说相同的
而且你表二的数据是不断增长的 这样下去短时间也许能找到解决办法 但长期下去系统肯定承受不了
最好把逻辑思路写上来 说不定有更好的解决办法
2010-07-19 11:04
快速回复:两个数据表多列比较如何用SQL语句完成,急盼高手指点,不甚感激!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019853 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved