如: select A.*,字段名=B.name from Table1 A join Table2 B on A.ID=B.ID order by A.字段名  
此语句在SQL2000下执行能通过,在sql2005及sql2008里无法通过,提示:消息 207,级别 16,状态 1,第 1 行
列名 '字段名' 无效。我程序里所有排序语句都是这样写的.升级到sql2005或sql2008后就无法使用了.求高手告诉我是否可在sql数据库里设置sql2005或sql2008能兼容此语句...谢谢!!!

解决方案 »

  1.   

    select A.*,字段名=B.name from Table1 A join Table2 B on A.ID=B.ID order by A.字段名看差了,这里,如果表table1没有  [字段名]  这个列,那就不能放order by后,如果要按别名 [字段名] 排序,直接 order by B.name 就行。
      

  2.   

    select A.*,字段名=B.name 
     from Table1 A join Table2 B on A.ID=B.ID 
     order by A.字段名---A表里有字段名这一列?
      

  3.   


    sql2000下执行没问题.sql2005/2008下执行,提示一定要在table1里有这个字段名才可以.
      

  4.   

    order by A.字段名你的表table1中有  [字段名]  这个列么?
      

  5.   


    [字段名]这个字段不存在任何表里,是从B表里引用过来select出来的.[/
      

  6.   


    关键为什么在sql2000下可以执行通过?
      

  7.   


    SQL2000你的语句如果是 order by A.字段名  也行不通,因为你表table1根本没这个列,楼主再去测试看下。
      

  8.   


    create talbe Table1(ID int)
    create talbe Table2(ID int,Name varchar(20))select A.*,字段名=B.Name from Table1 A join Table2 B on A.ID=B.ID order by A.字段名我在sql2000下百分百测试能通过。希望各位帮忙的,也最好自己先测试一下再发表意见好吗?谢谢 。
      

  9.   

    上面手误把TABLE写成了TALBECREATE TABLE Table1(ID INT)
    Go
    CREATE TABLE Table2(ID INT,Name VARCHAR(20))
    Go
    SELECT A.*,字段名=B.Name FROM Table1 A JOIN Table2 B ON A.ID=B.ID ORDER BY A.字段名求高手解决此语句如何才能在SQL2005及SQL2008下执行,万分感谢!
    因为我现有的程序里已经写死了语句是这样的方式,所以我没办法更改过来.
      

  10.   

    临时解决方法找到了:
    对着数据库名点右键-属性-选项-兼容级别-SQL Server 2000 (80)
    重启SQL服务即可!!!谢谢各位!!