SELECT 序号= (SELECT COUNT(合同号) FROM 订单 AS LiMing WHERE LiMing.合同号<= Chang.合同号) FROM 订单 AS Chang where 合同号='009' ORDER BY 1
这个查询实现了在订单表中查找合同号为“009”记录所在的顺序号。
不过这个语句我看不懂,能否详细的解释下。
这里的别名LiMing,Chang都是什么关系? 

解决方案 »

  1.   

    SELECT 序号= (SELECT COUNT(合同号) FROM 订单 AS LiMing WHERE LiMing.合同号<= Chang.合同号) FROM 订单 AS Chang where 合同号='009' ORDER BY 1--SELECT COUNT(合同号) FROM 订单 AS LiMing WHERE LiMing.合同号<= Chang.合同号
    查询小于或等于'009'的合同号记录行!
      

  2.   

    SELECT 序号= (SELECT COUNT(合同号) FROM 订单 AS LiMing WHERE LiMing.合同号<= Chang.合同号  where LiMing.合同号='009') 
    FROM 订单 AS Chang where 合同号='009' ORDER BY 1里面也应该机上 LiMing.合同号='009' 这个条件吧
      

  3.   

    SELECT 序号= (SELECT COUNT(合同号) FROM 订单 AS LiMing WHERE LiMing.合同号<= Chang.合同号  and LiMing.合同号='009') 
    FROM 订单 AS Chang where 合同号='009' ORDER BY 1
      

  4.   


    SELECT 序号= 
    (SELECT COUNT(合同号) FROM 订单 WHERE 合同号<= Chang.合同号) 
    FROM 订单 AS Chang where 合同号='009' ORDER BY 1这样你好理解一些,少一个别名也可以的
      

  5.   


    数据量小的时候没有问题,在SQL SERVER 2005+的版本出现了row_number().