rownum與order by 子句的執行順序關係
如果select語句(非巢狀查詢形式的)有order by子句,則order by子句一般都是最後一步執行的。但是如果order by子句裡的欄位被設定了主鍵約束或是被設定索引了,那麼order by子句執行之後,oracle系統還會重新對結果集的rownum值進行編號。也就是說,order by子句裡的欄位被設定了主鍵約束(或是被設定索引)的select語句,先是在資料行選入結果集時對其進行一次編號外,還會在order by子句執行之後,還會重新對結果集的rownum進行編號。
當然,如果我們需要排除因為排序欄位主鍵與否對執行順序的影響,不用在order by子句裡的欄位設定主鍵約束或是設定索引的方式,使結果集排序後再重新對結果集的rownum值進行編號,那還可以使用巢狀查詢的方式
Sql程式碼查詢如下:
SELECT *
FROM(
SELECT ROWNUM RN,TA.*
FROM(
select ID, YYB, XM, MC from user_info order by XM ;
)TA WHERE ROWNUM <= 20
)WHERE RN > 10
相關推薦
rownum與order by 子句的執行順序關係
如果select語句(非巢狀查詢形式的)有order by子句,則order by子句一般都是最後一步執行的。但是如果order by子句裡的欄位被設定了主鍵約束或是被設定索引了,那麼order by子句執行之後,oracle系統還會重新對結果集的rownum值
SQL查詢語句where,group by,having,order by的執行順序和編寫順序
當一個查詢語句同時出現了where,group by,having,order by的時候,執行順序和編寫順序。 一、使用count(列名)當某列出現null值的時候,count(*)仍然會計算,但是count(列名)不會。 二、資料分組(group by ): sel
Oracle資料庫中的ROWNUM和ORDER BY執行順序
使用SQL查詢Oracle表資料的時候,可能會有如下兩種結果需求。 對查詢結果集排序,並獲得其排序前的行號 對結果集排序後,為每一行加入行號 對於上述兩種結果需求,編寫SQL語句的時候,需要注意ROWNUM賦值和ORDER BY的執行順序。 如果ORDERBY
ORDER BY 子句與 DISTINCT衝突
在SQL中。如果使用SELECT DISTINCT(A) FROM TABLE ORDER BY 。。。時,後面ORDER BY 後的欄位名必須在前面選擇時出現,比如 select distinct(D1) from shop order by D1 這樣才不會出現衝突,如果是select distinc
針對sql錯誤:“除非另外還指定了 TOP 或 FOR XML,否則,ORDER BY 子句在檢視、行內函數、派生表、子查詢和公用表表達式中無效”的原理與解決
執行sql語句: select * from ( select * from tab where ID>20 order by userID desc ) as a order by date desc 邏輯上看著挺對 但是報錯: 除非另
SQL學習之使用order by 依照指定順序排序或自己定義順序排序
使用 auto acc font data- anything 優化 建立 exec 我們通常須要依據客戶需求對於查詢出來的結果給客戶提供自己定義的排序方式,那麽我們通常sql須要實現方式都有哪些,參考很多其它資料總結例如以下(不完好的和錯誤望大家指出): 一、假
group by having執行順序
時間 執行 百度 where tro 順序 weight red order 原文發布時間為:2009-07-28 —— 來源於本人的百度文章 [由搬家工具導入]核心原理where>group>having
sql 異常<除非另外還指定了 TOP、OFFSET 或 FOR XML,否則,ORDER BY 子句在視圖、內聯函數、派生表、子查詢和公用表表達式中無效。>
select sel top percent 異常 子句 cor 查詢 表達 問題:當子查詢內存在ORDER BY 字句時查詢會報錯 SQL: SELECT * FROM ( SELECT * FROM USER ORDER BY USER_CORD ) S. 解
1. 安裝Oracle,配置環境 2. 實現查詢From子句 3. 實現查詢where子句 4. 實現查詢order by子句
不可 所有 ear sql文件 是否 階段 dna cls 數學運算 一、環境安裝1. 登錄:以管理員身份登錄 sqlplus 登錄名/密碼 管理員身份登錄:sqlplus system/1234562. 登錄後,導入案例。下載scott.sql文件,執行下面一行的命令 S
主程序與子程序的執行順序
from multiprocessing import Process import time def task(name): print("%s start" % name) time.sleep(3) print("%s stop" % name) if __name_
mysql分組取每組前幾條記錄(排名) 附group by與order by的研究
select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name--方法2:select a.* from tb a where not exists(select 1 from tb
mysql group by 與order by 一起使用
我需要把資料分組排序,於是就想到先group by 然後 order by,可是執行的時候報錯 於是查資料發現group by 與order by 一起使用是要遵守一定原則的: 1.order by 的列,必須是出現在group by 子句裡的列 2.order
SQL Union和SQL Union All兩者用法區別效率以及與order by 和 group by配合問題
SQL UNION 操作符 UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。 請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 SELECT 語句中的列的順序必須相同。 SQL UNION
使用order by 按照指定順序排序或自定義順序排序
我們通常需要根據客戶需求對於查詢出來的結果給客戶提供自定義的排序方式,那麼我們通常sql需要實現方式都有哪些,參考更多資料總結如下(不完善的和錯誤望大家指出): 一、如果我們只是對於在某個程式中的應用是需要按照如下的方式排序,我們只需在SQL語句級別設定排序方式: 1
使用ORDER BY子句進行排序
語法結構: [ORDER BY{order_by_expression} [ASC,DESC]} [,...n]] 引數說明: order_by_expression 指定排序的列.可以指定為列名,列的別名和表示式. 注: 1).ORDER BY子句可包括未出現在此選擇列表
SQL 檢索排序資料(ORDER BY子句)
ORDER BY 子句用於對結果集按照一個列或者多個列進行排序。 ORDER BY 子句預設按照升序對記錄進行排序。如果需要按照降序對記錄進行排序,您可以使用 DESC 關鍵字。 注意:ORDER BY 子句應該位於FROM子句之後,若使用LIMIT關鍵字時,LIMIT關
OCP-1Z0-051 補充題庫 第10題 集合操作中的ORDER BY子句
Evaluate the following SQL statement: Which statement is true regarding the outcome of the above query?A. It produces an error because the ORDER BY clause
sql:除非另外還指定了 TOP 或 FOR XML,否則,ORDER BY 子句在檢視、行內函數、派生表、子查詢
執行sql語句: select * from ( select * from tab where ID>20 order by userID desc ) as a order by date desc 邏輯上看著挺對 但是報錯: 除非另外還指定了 TO
order by 1 與 order by 列名
經常見sql語句中order by 1或者order by 2...order by N,有時候很莫名其妙.其實1表示第一個欄位,2表示第二欄位; 依此類推,當表中只有2個欄位時,oder by 3就會出錯,這個跟order by 列名沒有什麼區別,不過在特殊情況下還是很
LINQ排序,用order by 子句進行排序
在LINQ中,orderby子句可以同時指定多個排序元素,還可以為每個排序元素指定獨立的排序方式。orderby語句後的第一個的排序元素為主要排序,第二個位次要排序,依次類推,如下所示,將所有學生首先按照姓名的字元數從少到多排序,其次按照學生年齡從高到低排序