1谱俭、【Order By不能用在派生表中】
表子查詢(也叫派生表)中代表的是一個(gè)關(guān)系表,而關(guān)系表中的行是沒有固定順序的宵蛀。
因此昆著,ANSI SQL不允許在表子查詢中包含order by子句。
SQL Server大致遵守了這一規(guī)定术陶,但有兩個(gè)例外:
當(dāng)表子查詢中有top或for xml子句時(shí)凑懂,可以包含order by子句。此時(shí)order by子句僅僅是為了篩選數(shù)據(jù)行梧宫,并不用于展示的目的接谨。因此,子查詢的結(jié)果不能保證是有序的塘匣。
2脓豪、【查詢指定日期指定關(guān)鍵詞的數(shù)據(jù)以及之前的5條數(shù)據(jù),最終結(jié)果按日期升序排列】
select top 6? * into #a from yilian.dbo.TB_YL_RoutineStatistics where item_no = 1 and statistic_mon < ( select statistic_mon from yilian.dbo.TB_YL_RoutineStatistics where substring(statistic_mon,1,4) = '2016' and substring(statistic_mon,5,2) = '09' and item_no = 1 ) order by statistic_mon desc 忌卤;
select * from #a order by statistic_mon 扫夜;
drop table #a;