中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

SQL Server2008 Order by在union子句不可直接使用(yong)的原因(yin)

按照要(yao)求,每個取top 20,既然(ran)(ran)是隨機(ji)的取,那么就(jiu)SQL Server Order by newid()就(jiu)是了,然(ran)(ran)后(hou)把所(suo)(suo)有數據(ju)union起來就(jiu)得(de)了。所(suo)(suo)以我立即給出了答案:

select top 20 * from xxx where type=1 order by newid()   

union   

select top 20 * from xxx where type=0 order by newid()  

但是在sql 查詢分析(xi)器(qi)種(zhong)不(bu)對,語法有(you)錯,我乍一看,好像沒有(you)問題吧(ba):

select top 20 * from xxx where type=1 order by newid()    單獨執行 都(dou)是沒有問題得;

下面(mian)的半句也是一樣的語法結構,也沒有錯誤。但是把這兩個(ge)查詢(xun)union起(qi)來就錯了(le)。奇怪啊。既然提示(shi)是order附近有錯,那么我將order給去掉(diao):

去掉也是(shi)可以(yi)運行也沒有錯啊(a)。也就是(shi)說(shuo)在union子句中的查詢不能(neng)用(yong)SQL Server Order by。但(dan)是(shi)這兒我必(bi)須要用(yong)order by啊(a),要不然我怎么取出(chu)隨機的20條記錄(lu)

最終改寫成了:


SELECT * FROM   

(select TOP 20 * from dbo.AngelExam where (c='無' or c=null) and (d='無' or d=null) ORDER BY newid() ) a1   

UNION   

SELECT * FROM   

(select TOP 20 * from dbo.AngelExam where (c='無' or c=null) and (d='無' or d=null) ORDER BY newid()) a2  

 

看著語句(ju)長了不少,有點怪怪得,但是(shi)沒法,不知道為什(shen)么SQL Server中不能在(zai)union子(zi)句(ju)中使用order by,所以(yi)只有外(wai)圍在(zai)包裝(zhuang)一層了。

posted @ 2020-07-19 15:45  Angelasp  閱讀(748)  評論(1)    收藏  舉報