成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server Order by在union子句不可直接使用的原因

數據庫 SQL Server
以下的文章主要向大家描述的是SQL Server Order by不可以直接在union子句中對其進行使用的原因,以下就是文章的主要內容的詳細描述。

此文章主要講述的是SQL Server Order by不可以直接在union子句中對其進行使用的原因,今天一個群中的朋友提出了一個問題,說有一個表,表中存在很多的相關數據,其中有個字段type,希望從表中隨機取出10條記錄,其中有5條type=1另外5條type=0,比如下圖這樣:

SQL Server Order by不能直接在union子句中使

 我一想,這還不簡單,按照要求,每個取top 5,既然是隨機的取,那么就SQL Server Order by newid()就是了三,然后把所有數據union起來就得了。所以我立即給出了答案:

  1. select top 5 * from xxx where type=1 order by newid()   
  2. union   
  3. select top 5 * from xxx where type=0 order by newid()  

但是那個兄弟說不對,語法有錯,我乍一看,好像沒有問題把,于是讓他把表定義發給我,我在本機試一下,表定義是:

  1. CREATE TABLE [dbo].[Question](   
  2. [id] [int] IDENTITY(1,1) NOT NULL,   
  3. [question] [varchar](50) NOT NULL,   
  4. [answer] [varchar](50) NOT NULL,   
  5. [type] [bit] NOT NULL,   
  6. CONSTRAINT [PK_Question] PRIMARY KEY CLUSTERED   
  7. (   
  8. [id] ASC   
  9. )WITH (PAD_INDEX = OFFSTATISTICS_NORECOMPUTE = OFFIGNORE_DUP_KEY = OFF,  
  10. ALLOW_ROW_LOCKS = ONALLOW_PAGE_LOCKS = ON) ON [PRIMARY]   
  11. ) ON [PRIMARY]   

于是將我的語句輸進SSMS,結果系統還真是報錯了:Incorrect syntax near the keyword 'ORDER'.

怎么回事啊?怎么看也不像有問題的啊。于是我單獨執行

  1. select top 5 * from dbo.Question   
  2. where [type]=1   
  3. ORDER BY newid()  

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

  1. (select top 5 * from dbo.Question   
  2. where [type]=1   
  3. )   
  4. UNION   
  5. (select top 5 * from dbo.Question   
  6. where [type]=0   
  7. )  

也沒有錯啊。也就是說在union子句中的查詢不能用SQL Server Order by。但是這兒我必須要用order by啊,要不然我怎么取出隨機的5條記錄?不用union可以不?可以啊,創建一個臨時表,將查詢出來的5條數據插進去,另外5條也是。然后再查詢臨時表,但是能不使用臨時表就盡量不要使用臨時表,何必弄的那么復雜。

又要用order by 又要用union,怎么辦?order by不能直接出現在union的子句中,但是可以出現在子句的子句中啊!于是查詢最終改寫成了:

  1. SELECT * FROM   
  2. (select TOP(5) * from dbo.Question where [type]=1 ORDER BY newid() ) t1   
  3. UNION   
  4. SELECT * FROM   
  5. (select TOP(5) * from dbo.Question where [type]=0 ORDER BY newid()) t2  

感覺有點別扭,但是沒法,不知道為什么SQL Server中不能在union子句中使用order by,所以只有出此下策了。

以上的相關內容就是對SQL Server Order by不能直接在union子句中使用的介紹,望你能有所收獲。

【編輯推薦】

  1. MS SQL Server問題與其正確解答方案
  2. SQL Server 數據導入的實際行為規范描述
  3. SQL Server 2000的安全策略的正確打造
  4. SQL Server DateTime數據類型的另類解讀
  5. SQL Server identity列,美中不足之處
責任編輯:佚名 來源: csdn.net
相關推薦

2010-11-11 16:53:28

SQL Server視

2010-11-09 10:10:08

SQL Server

2011-08-24 11:22:38

SQL ServerUNION代替OR

2010-09-06 11:24:32

SQL Server語句

2011-07-29 15:31:52

Oracle數據庫ORDER BY

2011-08-29 11:38:18

SQL Server 聯合結果集union

2011-07-28 16:16:27

MySQL數據庫索引ORDER BY

2011-08-16 16:10:12

MySQLORDER BY子句GROUP BY子句

2010-09-26 09:50:36

SQL Where子句

2010-07-20 08:35:54

SQL Server鎖

2010-11-09 16:29:39

SQL Server死

2010-09-26 14:46:19

SQL WHERE子句

2011-04-01 14:43:14

SQL Server不可見字符

2010-09-16 09:49:38

sql server建

2010-07-23 11:35:03

SQL Server置

2010-07-02 10:53:32

SQL Server死

2011-04-02 16:39:53

SQL Server查詢

2010-09-08 15:42:46

SQL指令UNION

2010-07-22 10:02:12

SQL Server置

2010-11-12 11:19:19

SQL Server視
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色综合欧美 | 黄色免费在线观看网址 | 6996成人影院网在线播放 | 精品视频在线观看 | 久草新在线 | 99亚洲综合 | 黄a在线播放 | 国产乱码精品一区二区三区忘忧草 | 亚洲一区电影 | 国产精品亚洲精品 | 欧美精品久久久久久 | 在线观看视频91 | 国产91亚洲精品一区二区三区 | 国产精品永久免费视频 | 四色成人av永久网址 | 中文一区二区视频 | 久久蜜桃精品 | 久久久www成人免费精品张筱雨 | 91亚洲国产亚洲国产 | 成人三区 | 国产欧美视频一区二区三区 | 国产激情在线 | 久久综合av | 亚洲精品美女视频 | 精品久| 九九精品在线 | 午夜电影福利 | 五月天国产视频 | 色婷婷一区二区三区四区 | 色999视频| av大片在线| 精品在线看| 国产一区二 | 男人的天堂中文字幕 | 国产清纯白嫩初高生视频在线观看 | 亚洲欧美一区二区三区国产精品 | 日韩在线视频观看 | 国产精品久久久久免费 | 欧美一级高潮片免费的 | 国产成人精品一区二区三区网站观看 | 91九色麻豆 |