sql 表的查询语句

来源:百度知道 编辑:UC知道 时间:2024/06/15 13:05:55
有2张表
Table A
Id Name1 Num1
1 a 55
2 b 100
3 c 10
4 d 40
Table B
Id Name2 Num2
1 a 55
2 b 50
3 b 30
4 b 20
5 c 20
6 d 30
7 d 20
8 d 1
9 a 10
现在要利用A表中已有的字段来查询出B表中符合A表中条件的字段ID

注意哦!
1.当直接有相等值时就取B表中那个相等值的id
2.当没有直接相等值但是可以通过合并几项来取得的要抓出那几项的id(分别哦)
3.当B表中没有对应A表中的值或值都大于A表时就显示A表原来的值

SOS!想了很久了 !知道用游标但是就是……
powerboy4969 不好意思是我在表中忘记体现当B表中假设b字段还有一个值10那么如果有你所说的第二个(select)这样就不行,不好意思是我忘了说明对于这样的情况是否有好的解决方式呢 谢谢!

独驾舟千里去 由于我这个是要在数据库中的一个平台运行的,所以 就是麻烦啊! 不过谢谢你提供的思路

你把你需要的检索结果,写出来。然后我们再提供sql文
不知道是不是你要的
(select b.id, b.name2,b.num2 from a inner join b on a.name1 = b.name2 and a.num1 = b.num2)
union all
(select b.id ,b.name2,b.num2 from a
inner join (select name2,sum(num2) sumnum from b group by name2) bb on a.name1 = bb.name2 and a.num1= bb.sumnum
inner join b on bb.name2 = b.name2)
union all
(select b.id,b.name2,a.num1 from a inner join b on a.name1 = b.name2 and a.num1 < b.num2)

不要用sql写吧,有点麻烦,改成程序的case吧
首先判断:
1、select b.name,b.id from a,b where a.num1=b.num1
2、在第二步中直接过滤掉已经检索出来的b.name1集合,并顺序读取剩余b表数据,然后用冒泡法累加求和,筛选出满足条件的b.id,以及需要进一步过滤的b.name2
3、select id from a where name not in (b.name1集合+b.name2集合)