表A
主叫          被叫
1       059122222222
2        13833333333
3       013844444444
4           55555555
5           66666666表B
区号         注释
0591         福州
....
表C      
号段          注释
1383333       北京
1384444       上海
.....表D
号码          注释    用户    地址     联系人 
55555555      aa       dd      ff         f
66666666      bb       dfg      gsd        dsd
.....
 
结果表AAA
 
主叫          被叫             注释 
1       059122222222           福州
2        13833333333           北京
3       013844444444           上海
4           55555555            aa
5           66666666            bb
  
求:  1  得出 表AAA的语句
      2  如何在  表B(几百个数据)  表C(十万左右数据,字段“号段” 都不一样的数据)  表D(一百万左右数据  字段 “号码” 有少数一样) 创建索引让得出表AAA的速度快些 
感谢大虾们!  节日愉快!

解决方案 »

  1.   

    select 区号,注释 into #t from B
    Union All
    select 号段,注释 from C
    Union All
    select 号码,注释 from Dselect 主叫,被叫,注释=(select min(注释) from #t where 被叫 like '%'+区号+'%') from A drop table #t
      

  2.   

    楼上这位大虾    题目:
    "表B(几百个数据)  表C(十万左右数据,字段“号段” 都不一样的数据)  表D(一百万左右数据  字段 “号码” 有少数一样)"
      

  3.   

    求:  1  得出 表AAA的语句---------
    可以不用臨時表。Select
    A.*,
    E.注释
    From
    A
    Left Join
    (Select 区号, 注释 From B
    Union All
    Select 号段, 注释 From C
    Union All
    Select 号码, 注释 From D
    ) E
    On CharIndex(A.被叫, E.区号) > 0