1. 程式人生 > >關於sql server中,建檢視的語句中不能加order by的問題

關於sql server中,建檢視的語句中不能加order by的問題

今天寫了個SQL語句

select * from (

select ... from A? union ?select ...from B order by B.xx

) as Tmp

SQL查詢分析器中老是報錯:The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.

而單獨執行select ... from A? union ?select ...from B order by B.xx語句時是可以的。

後來分析原因如下:

sql中建view是不能用order by字句的,即:

如果把該查詢語句建成檢視
? create view v_test
? as
? select * from sysobjects order by name
? 會提示出錯:
The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.

而在巢狀查詢中,系統會自動為select ... from A? union ?select ...from B order by B.xx語句建一個view,裡面有order by字句,當然會報錯了,去掉order by後,執行成功!

相關推薦

關於sql server檢視語句不能order by的問題

今天寫了個SQL語句 select * from ( select ... from A? union ?select ...from B order by B.xx ) as Tmp SQL查詢分析器中老是報錯:The ORDER BY clause is invalid in views, inline

在Oracle、MySQL執行sql指令碼生成hive語句

python3指令碼: #mysql for i in range(len(table_name)): sql1 = """SELECT CONCAT('create table ','%s','(') UNION ALL SELECT CONCAT(

翻譯:《Pro SQL Server Internals2nd edition》的CHAPTER 2 Table and Indexes的Clustered Indexes

原文連結:http://www.allitebooks.com/pro-sql-server-internals-2nd-edition/ 原文作者:Dmitri Korotkevitch 聚集索引 聚集索引指示表中資料的物理順序,該表根據聚集索引鍵進行排序。 該表只能定義一個聚集索引。 假設您要在堆

c#SQL Server 資料庫的讀寫語句

資料庫讀寫 CDataBase using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Dat

powerDesigner將name信息生成到備註導出語句有備註信息

sql 情況 blank idt comm 說明 -1 建表 twitter name註釋信息 在創建pdm時由於需要在name列填寫的是以後要在表中創建的註釋信息,comment中則寫的說明信息字數比較多。默認情況下在生成建表sql時不能將name生成註釋信息,進行如下設

SQL Server數據庫安裝過程遇到的問題

出現 安裝 .com benet 計算機 div 端口 分析器 名稱 之前因為項目需求,使用SQL Server 2008R數據庫,在安裝完成之後,登錄的時候遇到點問題 問題是:   在本地進行連接的時候localhost、.等無法直接登錄,必須加上實例名,如localho

在數據庫sql查詢很快但在程序查詢較慢的解決方法

type acl value and 字段類型 number bte check rec 在寫java的時候,有一個方法查詢速度比其他方法慢很多,但在數據庫查詢很快,原來是因為程序中使用參數化查詢時參數類型錯誤的原因 1 select * 2

SQL SERVER 將一個數據庫的表和資料複製到另一個數據庫

第一種情況:將A資料庫.dbo.A表的資料追加到B資料庫.dbo.B表中 (條件:此時B資料庫中已建立好了B表) insert into B資料庫.dbo.B表 select * from A資料庫.dbo.A表 [where條件] 此T-SQL語句會有異常   &n

解決SQL Server查詢使用Union或Union All後Order by排序無效的bug(好神奇啊!!)

http://www.ourcodelife.com/article-415-1.html 首先,在程式人生網站上,需要負責任的指出的是在SQL Server查詢中使用Union或Union All後Order by排序無效,我不確認是不是微軟的bug,不過這裡卻是我實際程式設計工作的經驗,但願大家看到

【MyBatis】sql語句的按時間排序無效問題order by create_time desc

mybatis的mapper檔案中書寫sql語句,但是根據時間倒序查詢的order by create_time 突然無效了,這是為什麼?導致無效的原因:時間格式做了改變,時間欄位別名和原始欄位重名,導

SQL Server 在多個數據庫建立同一個儲存過程(Create Same Stored Procedure in All Databases)

一.本文所涉及的內容(Contents) 二.背景(Contexts)   在我的資料庫伺服器上,同一個例項下面掛載著許多相同結構的資料庫,他們為不同公司提供著服務,在許多時候我需要同時建立、修改、刪除一些物件,儲存過程就是其中一個,但是想要批量建立儲存,這有些特殊,下面就教你如何實現在多個數據庫中建

Sql Server儲存過程從一個表抓取資料填充到另一張表

  set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author:  <alex,,Name> -- Create

SQL SERVER 主鍵和外來鍵的 級聯刪除(ON DELETE CASCADE)和級聯更新(ON UPDATE CASCADE)

建立學生表 create table gh_student( stuno varchar(3) primary key, stuname varchar(4), stuclass varchar(3) ) 插入資料 insert into gh_student values

初入職常見問題:忽略區域性變數的作用域在if語句宣告的區域性變數只在{}內有效

在做儲存服務StoreProxy專案時,因為把位置(A)處的程式碼放到了位置(B),導致儲存的圖片資料有誤,原因是忽略叻區域性變數的作用域,在if語句中宣告的區域性變數res只在{}內有效。 函式xxxxx(xxx,xxxx) {     (A)CHttpCurl

[mysql]SQL語句效能優化--Order byDESC慢很多的原因調查與處理

1. mysql在資料量較大的時候、使用order by查詢結果集時速度很慢的原因可能有以下幾種:1) 排序欄位不在同一張表中2) 排序欄位沒有建索引3)排序欄位加DESC後索引沒有起作用(如何讓索引起作用才是關鍵、且聽下文分解)4)排序欄位中加函式導致索引不起作用(這種一定

SQL Server : 表是否存在;表某欄位是否存在;儲存過程是否存在;索引是否存在;

table_name --表名field_name --欄位名一、表是否存在:--如果不存在表,那麼建立IF OBJECT_ID('table_name') IS NULL BEGIN      CREATE TABLE table_name([field_name] [UN

在eclipse如何檢視webservice請求頭

本篇文章還以HelloService為例。 完整的HelloService.java檔案如下 package cn.itcast.ws; import javax.jws.WebService; import javax.xml.ws.Endpoint; /** *

給定一個字串:要求輸入英文語句輸出英文語句每個單詞在字串出現的次數。

def geshu(src): n=0; str1 = src.split(); len1=len(str1); for s in str1: n = 0; for i in range(len1):

struts2下jsp檢視頁面CSS和javascript引用相對路徑和絕對路徑問題。

在Struts2的實際使用中,經常會在jsp檢視頁面中引入CSS和javascript,這就涉及到引用路徑問題。路徑有兩種,一種是相對路徑,另一種是絕對路徑。我們分別來說說在Struts2的頁面檢視中

檢視SQL SERVER 資料庫正在執行的語句和時長等

SELECT session_Id, --ecid, --sp.dbid,--DB_NAME(sp.dbid) as DB_NM, --nt_username,er.status,wait_type,SUBSTRING (qt.text, er.statement_star