求助一个sql语句如何写
当前有2个表
表A:
indexA indexB number
1 11 123
1 12 234
1 13 345
2 21 123
2 22 234
3 23 123
表B:
indexA indexB number
1 12 230
1 13 12
2 21 50
2 22 0
期待结果:
表C:
indexA indexB number
1 11 123
1 12 230
1 13 12
2 21 50
2 22 0
匹配规则:
1.indexB唯一
2.基于表B中存在的indexA,取出表B所有的indexB
3.如果表B有对应的indexB,则number取表B的number,否则取表A的number
另外,表A比较大,表B比较小。
如何来写sql?并尽可能提高效率。
我尝试用case,结果总是不对。
大神来帮忙吧。。。
------解决方案--------------------试试这个:
--drop table a,B
create table A(indexA int, indexB int, number int)
insert into a
select 1 ,11 ,123 union all
select 1 ,12 ,234 union all
select 1 ,13 ,345 union all
select 2 ,21 ,123 union all
select 2 ,22 ,234 union all
select 3 ,23 ,123
create table B(indexA int,indexB int,number int)
insert into B
select 1 ,12