具体说下
是不是这样理解declare @a table(a int,b int)select a.*
from @a m
join @a n
on
m.a=n.a这样的话是不是 别名为m中的数据和别名为n的表中的数据就不一样了阿别名为a中的数据是不是符合这个条件之后的数据阿?

解决方案 »

  1.   

     别名为m中的数据和别名为n的表中的数据就不一样了阿 m和n的数据还有表的结构是完全一样的declare @a table(a int,b int)select a.*
    from @a m
    join @a n
    on
    m.a=n.a你的这里面没有别名a
      

  2.   

    两个相同的表,以不同的别名进行内连接(注意,不叫自连接)放在左边和右边的区别在于:左边表采用什么条件获得数据,右边采用什么表获得数据.
    如:
    select a.id,a.name,b.age,b.address from
    tb a inner join tb b where
    a.age>30
    and
    b.name<>'me'
    它的结果与:
    select a.id,a.name,b.age,b.address from
    tb a inner join tb b where
    b.age>30
    and
    a.name<>'me'
    的结果是不一样的.
      

  3.   

    那仁兄就拿我上面那个例子分析下。select a.name,a.date,a.comefrom,a.destin,b.date,b.comefrom,b.destin
     from trav a inner join trav b on a.name=b.name and a.comefrom=b.destin and a.destin=b.comefrom where a.id<b.id  
     and not exists(select 1 from trav where comefrom=b.comefrom and date<b.date and date>a.date)别名为a的别名为b的数据一样吗?
    不一样的话为什么啊?