none
这两个查询语句有和区别,求高手赐教 RRS feed

  • 问题

  • 第一个语句:

    SELECT     TOP (200) StationID, ObservTime, InsertTime, Wd1m, Ws1m, Wd2m, Ws2m, Wd10m, Ws10m, WdMax, WsMax, WsMaxTime, Wd_ss, Ws_ss, Wd_JD, Ws_JD, 
                          Ws_JD_Time, TT, TMax, TMaxTime, TMin, TMinTime, Tw, RH, RHMin, RHMinTime, Vapor, Td, Pp, SeaPressure, PMax, PMaxTime, PMin, PMinTime, Rain60min, R1M, 
                          R1H, Backup1, Backup2
    FROM         dbo.tabMinuteData
    WHERE     (StationID = '58563')
    

    查询后结果如图:

    第二个语句:

    SELECT     TOP (200) 58563 AS StationID, ObservTime, InsertTime, Wd1m, Ws1m, Wd2m, Ws2m, Wd10m, Ws10m, WdMax, WsMax, WsMaxTime, Wd_ss, Ws_ss, Wd_JD, 
                          Ws_JD, Ws_JD_Time, TT, TMax, TMaxTime, TMin, TMinTime, Tw, RH, RHMin, RHMinTime, Vapor, Td, Pp, SeaPressure, PMax, PMaxTime, PMin, PMinTime, 
                          Rain60min, R1M, R1H, Backup1, Backup2
    FROM         dbo.tabMinuteData
    

    查询结果:

    菜鸟求高手赐教,这两语句的区别,为何有的表查询出来一样的,有的就如上不一样(第一幅只有两条结果,第二幅就比较多了)?Thanks!


    Yang
    2011年11月22日 3:38

答案

  • First query has search condition to filter result while second query doesn't have any. That's why first query may return less than 200 rows based on where clause, second query will return 200 rows or whole table if there are less than 200 rows in the table.   
    • 已标记为答案 zjyh16 2011年11月22日 5:56
    2011年11月22日 4:13
  • 第一個T-SQL查詢有使用WHERE子句來篩選StationID為58563的資料,第二個沒有,所以會造成查詢結果不同。

    http://msdn.microsoft.com/zh-tw/library/ms188047(v=SQL.90).aspx


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    • 已标记为答案 zjyh16 2011年11月22日 5:56
    2011年11月22日 5:36
  • 明白了,其实我的问题关键是我不明白第二个语句中的“58563 AS StationID”,以为这也是筛选条件,事实上where才是条件,第二个语句当然是没有条件的。其实把58563换成任何字符串应该结果都是和第二幅图一样的,只是第一列里面是其他字符串了。
    再次感谢你们回答~

    Yang
    • 已编辑 zjyh16 2011年11月22日 5:56
    • 已标记为答案 zjyh16 2011年11月22日 5:56
    2011年11月22日 5:55

全部回复

  • First query has search condition to filter result while second query doesn't have any. That's why first query may return less than 200 rows based on where clause, second query will return 200 rows or whole table if there are less than 200 rows in the table.   
    • 已标记为答案 zjyh16 2011年11月22日 5:56
    2011年11月22日 4:13
  • First query has search condition to filter result while second query doesn't have any. That's why first query may return less than 200 rows based on where clause, second query will return 200 rows or whole table if there are less than 200 rows in the table.   

    I read your words,but still not understand,not very clear.Why the first query not list all of the rows where StationID = 58563?

    thank u for your answer.


    Yang
    2011年11月22日 5:18
  • 第一個T-SQL查詢有使用WHERE子句來篩選StationID為58563的資料,第二個沒有,所以會造成查詢結果不同。

    http://msdn.microsoft.com/zh-tw/library/ms188047(v=SQL.90).aspx


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    • 已标记为答案 zjyh16 2011年11月22日 5:56
    2011年11月22日 5:36
  • 明白了,其实我的问题关键是我不明白第二个语句中的“58563 AS StationID”,以为这也是筛选条件,事实上where才是条件,第二个语句当然是没有条件的。其实把58563换成任何字符串应该结果都是和第二幅图一样的,只是第一列里面是其他字符串了。
    再次感谢你们回答~

    Yang
    • 已编辑 zjyh16 2011年11月22日 5:56
    • 已标记为答案 zjyh16 2011年11月22日 5:56
    2011年11月22日 5:55