sql 两个表连接

来源:百度知道 编辑:UC知道 时间:2024/06/01 03:31:32
a表(id,sl):(1,2)(2,3)(3,4)(4,5)
b表(id,xm,sl):(1,a,2)(2,b,3)(3,a,2)(3,c,3)(4,d,6)
根据id得到表(xm,sl):(a,4)(b,3)(c,3)(d,5)(两个表id唯一,sl不同取啊表数据;id不唯一,则取b中sl)
求sql命令
我也不知道怎么描述了,就是得到最后一个表;b表中的id=3,有两条记录,但两条记录的sl加起来又不等去a表中id=3的记录,这里就取b表中的sl=2+3;而b表中id=4,一条记录,跟a表中id=4中sl不同,取a表中的sl=5

你自己都说矛盾了。“如果b表中id不唯一,则取b中的sl”
事实是b中)(3,a,2)(3,c,3)这两行记录id不唯一,按你说sl应该取2还是3?
select a.xm,sum(sl) from (select b.xm,a.sl from b left join a on a.id=b.id where b.id in
(select id from b group by id having count(id)=1)
union all
select xm,sl from b where id in
(select id from b group by id having count(id)>1))a
group by a.xm

调试成功的

如果b表的id不唯一,则b表中就有多个sl,你得说清楚取哪个sl,大的或小的?

对问题补充的答复:
还是没法写,如果b表中ID不唯一,那么xm取哪个值?总不能把xm也加起来吧

测试了一下,下列语句可以:
SELECT b.xm, IIF((SELECT COUNT(id) FROM b WHERE b.id=a.id)>1,b.sl,a.sl) FROM a INNER JOIN b ON a.id=b.id