有两张表,A和B,其中A.name和B.name列名的值相等,但是“A.name和B.name排序不一样”
现在两张表需要连接成一张表,取A表和B表的所有字段,按照A.name的字段的顺序来排序,
但是最关键的一点是“必须保持A.name的排序顺序不变”。意思就是保持原先A表中name字段的顺序。
而且A.name中的字段还有空格,每行的空格数目不等,这些空格也要保留。下面我尝试写了一段,但是根本得不到预期的结果:
select t.name,f.name,f.other from A t inner join B f
on ltrim(rtrim(t.name))=f.name 
order by ltrim(rtrim(t.name)) asc
请高手来帮帮忙,我想了好几天了,一点头绪都没有

解决方案 »

  1.   

    表A和B得数据都有1000多行,行数是相等的。
    A.name和B.name中存放都都是字符串,15-30个字符每行。
    可能我的意思表达的有点混乱,但大概就是上面的意思。
      

  2.   

    select t.name,f.name,f.other from A t LEFT join B f
    on ltrim(rtrim(t.name))=f.name 
    order by ltrim(rtrim(t.name)) asc
    --猜的,试试
      

  3.   

    这个是A.name中的排序,和B.name中的相同,但是顺序不一样。
    所以就取了A.name来,凑合着看。实际B表中和A表对应的name字段书序肯定不一样的。1TAS.710.10140
             5TAS.516.10019.01
             5TAS.517.10133.01
             M0502010002
             5TAS.384.10147.01
             5TAS.022.10035.04
             W0107080012
             T46060009
             GB5783-M20X55-133
                               GB97.1-20-113
                      GB97.1-20-113
             GB97.1-20-113
                      GB93-20-153
      

  4.   

    select t.name,f.name,f.other from A t LEFT join B f
    on ltrim(rtrim(t.name))=f.name 
    还是不大明白
      

  5.   

    回 guguda2008:
    因为A.name字段中的内容还有空格,所以on的条件中要去掉空格来比较。
      

  6.   

    select t.name,f.name,f.other from A t inner join B f
    on ltrim(rtrim(t.name))=f.name 
    order by ltrim(rtrim(t.name)) ascselect t.name,f.name,f.other from A t left join B f
    on t.name=f.name 
    order by t.name asc
      

  7.   

    A和B表连接到一张表时,需要按照A中name的顺序来排序,就是A表中的内容原封不动的在表中显示。
    A表中每行前面都有一个空格的缩进,实际输出时还想把缩进增大,以增加可读性。
    下面的是重新提取的,A、B表中的name字段内容:
    谢了,高手们。--A表中的name字段
     W0107020010                                     
     W0105070003                                    
      8TAS.055.10034.02                                   
     M0401100503                                                  
     W0101060003                                                
     W0105010002                                                  
     W0106040003                                                    
      M0406030001                                                      
     W0107080012                                                    
       M0101010002                                               
     M0401070328                                                   
     W0105010001                                                            
     M0401170502                                                          
     W0124010005                                           
     W0111020034                                                   
     5TAS.022.10035.04                                              
     M0104010008                                                      
     W0107020001                                               
     W0112010002                                                  
     M0502010002                                                  
     W0105070001                                                  
     8TAS.770.10215.01                                                
     W0104010005                                                    
     W0108030002                                                 
    1TAS.710.10140ZC                                                     
      8TAS.860.10027.05                                             
      W0115010001                                           
     W0107090017                                                            --B表中的的name字段
    M0401100503
    W0107090017
    W0104010005
    W0101060003
    5TAS.022.10035.04
    M0401170502
    W0105070003
    W0112010002
    M0101010002
    W0115010001
    W0105070001
    W0111020034
    W0108030002
    W0105010002
    W0107020001
    8TAS.860.10027.05
    W0107020010
    W0107080012
    W0105010001
    M0406030001
    W0106040003
    8TAS.055.10034.02
    8TAS.770.10215.01
    M0401070328
    M0502010002
    M0104010008
    1TAS.710.10140ZC
    W0124010005
      

  8.   

    结果默认是按第一个表排序,你这样试一下select t.name,f.name,f.other from A t inner join B f
    on ltrim(rtrim(t.name))=f.name