zoukankan      html  css  js  c++  java
  • SQLSERVER之T-SQL查询(二)

      今天我们讨论一个简单的问题,由于是刚想到怕忘记记录,所以一个简单的问题写一个博客有点儿浪费。不过技术在于理解,在于知其然也要知其所以然,还是记录一下同时也希望能帮到大家。SQL查询会有很多博客,希望自己能耐心的写下去,巩固自己的知识。

      大家知道SQL中有一组关键字叫做ORDER BY,在上一篇博客中已经提到过。他是最后执行的,用来排序 (ORDER BY 字段名 DESC 和ORDER BY 字段名 ASC)。大家发现在子查询中是不能使用ORDER BY排序的,这样会产生语法错误。但是为什么会这样呢?下面我们经过一个SQL语句来分析一下。

         SELECT  S.SID,S.Name

         FROM  dbo.Student AS S

         WHERE S.SID IN(

                  SELECT C.SID

                  FROM dbo.Class

                  ORDER BY C.SID

                  )

      这个时候SQLSERVER会报语法错误。这是为什么呢?

      在上一篇博客中提到过,ORDER BY子句执行是放在SQL语句的最后的。也就是说,子句SELECT C.SID FROM dbo.Class  ORDER BY C.SID中 ORDER BY C.SID是最后执行的。这个子句首先执行FROM dbo.Class,然后执行SELECT C.SID 。在表中筛选出 SID所有的字段值。最后执行的ORDER BY C.SID 对SID进行升序排列。这个时候,大家一定要注意:

          当ORDER BY 出现在子句中的时候,它所返回的不是一个DATATABLE或者说不是返回的一个临时表,而是返回的一个游标(指针)。

    所以这个时候子查询中的会报错误。

      

  • 相关阅读:
    算法面试题解答(三)
    计算机基础知识问答
    算法面试题解答(五)
    关于POD
    算法面试题解答(四)
    算法面试题解答(一)
    Perfect Interview (序)
    如何调整Dreamhost主机PHP上传尺寸的限制/How to change the maximal size of uploading in your Dreamhost
    Final Fantasy XIII Finished
    Ortholab has been moved to Google Code
  • 原文地址:https://www.cnblogs.com/sun-sjmeng/p/3197629.html
Copyright © 2011-2022 走看看