比如:
from tb1 as A cross join tb1 as B为什么不可以改成from tb1 as A cross join A

解决方案 »

  1.   

    from tb1 as A cross join tb1 A
      

  2.   

    from tb1 as A cross join A重名了,如果这两个表有一个相同的字段id,你写a.id时,不知道你说哪个表的id
      

  3.   

    跟 as前面的表同步 http://blog.csdn.net/feixianxxx/archive/2009/10/18/4694354.aspx
      

  4.   

    AS 译为 “为” ,指定字段别名、表别名、创建函数、创建视图、创建触发器等时候会用到的关键字。
    至于:
    from tb1 as A cross join tb1 as B为什么不可以改成from tb1 as A cross join A
    是因为解析顺序的问题,也就是说,刚指定完别名,跟它“同级别”的连接还识别不了这个别名作为新连接对象。大概这个意思。
      

  5.   


    顶....表的别名不能重复哦...from tb1 as A cross join tb1 as B
      

  6.   

    4楼那地址里的东西写得倒是不错,但貌似没看到有具体能解决这问题的,7楼说的挺有道理的......应该是解析顺序相关的......那么SQL里具体的解析顺序遵循什么样的一个原则啊......我前几天曾经问过一个问题,跟这问题很类似的:y>1 and x/y>2这个表达式跟x/y>2 and y>1是否等价x,y满足这样一个表<x,y>:{1,0},{1,1},{4,2},{6,1}......,就是这种的,拿来一起讨论一下,SQL在具体执行一个运算符的时候是如何解析两边的表达式的?
      

  7.   

    y>1 and x/y>2这个表达式跟x/y>2 and y>1是否等价?从数学角度来将是等价的.
      

  8.   

    当然不是从数学角度来看,是从MS-SQL的角度看是如何解析的......
      

  9.   

    from tb1 as A --如果把tb1看作是父亲,把A看作是儿子,那么儿子在此步骤才生出来
    cross join A --这里,这个位置与上面的父亲(也就是tb1)同辈份,A辈份太小,所以SQL不允许这样连接
      

  10.   

    select * from table1 as a--把table1定义为a,同一select语句中不能作为实表使用