成人免费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

2010-09-06 11:24:32

SQL Server語句

2011-07-29 15:31:52

Oracle數據庫ORDER BY

2011-08-24 11:22:38

SQL ServerUNION代替OR

2011-08-29 11:38:18

SQL Server 聯合結果集union

2010-09-26 09:50:36

SQL Where子句

2011-07-28 16:16:27

MySQL數據庫索引ORDER BY

2011-08-16 16:10:12

MySQLORDER BY子句GROUP BY子句

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-07-23 11:35:03

SQL Server置

2010-07-02 10:53:32

SQL Server死

2010-09-16 09:49:38

sql server建

2011-04-02 16:39:53

SQL Server查詢

2014-12-09 10:24:53

CrossApp開源

2025-05-13 06:30:00

殺毒軟件企業安全

2010-09-08 15:42:46

SQL指令UNION
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 9色网站| 亚洲第一视频网站 | 日本一区二区高清不卡 | 精品中文视频 | 精品欧美一区二区三区免费观看 | 性色av一区二区三区 | 日韩在线精品视频 | 黄色大片观看 | 国产一区二区三区免费 | 日本小电影在线 | 亚洲欧美成人影院 | 午夜寂寞影院列表 | 欧美日韩在线免费 | 男人的天堂亚洲 | 伊人精品在线视频 | www.欧美 | 日韩在线免费播放 | 日日射夜夜骑 | 国产成人综合在线 | 欧美日韩精品一区二区三区四区 | 国产精品美女 | 日韩欧美在线视频 | 三极网站 | 亚洲久草视频 | 久草成人| 国产98色在线 | 日韩 | 国产精品国产 | 中文字幕一区二区三区不卡在线 | 久久人人网 | 国产女人与拘做视频免费 | 乱一性一乱一交一视频a∨ 色爱av | 日韩在线欧美 | 久久剧场| 日韩在线观看精品 | 91精品导航| 亚洲一区二区三区四区五区中文 | 日本福利在线 | 精品九九久久 | 国产免费一二三区 | 91av精品| 黄色免费网站在线看 |