疑问: select 语句中,为什么给表指定了别名,就不能使用原表名了?例如  select m.username ,m.password from members m 可以而 select members.username ,m.password from members m 就不可以。

解决方案 »

  1.   

    select members.username ,m.password from members m,members
    对于上面这个语句,LZ以为如何?所以DBMS为了消除二义性,强制必须使用别名来定义标识符(如果有别名的话)。
      

  2.   

    感觉用别名最主要是消除自连接时候的二义性
    例如下面的USE Northwind
    GOSELECT  A.FirstName + ' ' + A.LastName AS EmployeeName
           ,B.FirstName + ' ' + B.LastName AS DirectorName
      FROM  Employees A
    LEFT JOIN Employees B ON A.ReportsTo = B.EmployeeID
      

  3.   

    那字段别名在where中不可以,在order by中可以,
    谁可以解释解释呢?如select username as u,password from members
    where u='abc'
    order by u为什么where中不可以用u,而order by中则可以?
      

  4.   

    where的执行在select之前  所以在执行where后面的部分时,还不知道username被取别名了,而order by 执行在select之后   所以就可以识别