首頁 資料庫 mysql教程 数据库取前几条记录的语句

数据库取前几条记录的语句

Jun 07, 2016 pm 02:53 PM
資料庫 記錄 語句

数据库取前几条记录的语句 1. ORACLE www.2cto.com SELECT * FROM TABLE1 WHERE ROWNUM=N 2. INFORMIX SELECT FIRST N * FROM TABLE1 where 1=1 3. DB2 SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM=N 或者 SELECT COLUMN FROM T


数据库取前几条记录的语句

 

1. ORACLE     www.2cto.com  

SELECT * FROM TABLE1 WHERE ROWNUM

2. INFORMIX 

SELECT FIRST N * FROM TABLE1 where 1=1 

3. DB2 

SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM

或者 

SELECT COLUMN FROM TABLE where 1=1 FETCH FIRST N ROWS ONLY 

4. SQL SERVER 

SELECT TOP N * FROM TABLE1 where 1=1 

or 

SET ROWCOUNT N SELECT * FROM TABLE1 where 1=1 SET ROWCOUNT N1 

5. SYBASE 

SET ROWCOUNT N SELECT * FROM TABLE1 where 1=1 SET ROWCOUNT N1 

6. MYSQL 

SELECT * FROM TABLE1 where 1=1 LIMIT N 

7. FOXPRO 

SELECT * TOP N FROM TABLE ORDER BY COLUMN 

8. ACCESS 

SELECT TOP N * FROM TABLE1 where 1=1

 

 1. Oracle数据库

  

  SELECT * FROM TABLENAME WHERE ROWNUM

  

  2. Infomix数据库

  

  SELECT FIRST N * FROM TABLENAME

  

  3. DB2数据库

  

  SELECT *

  FROM (SELECT * ROW_NUMBER() OVER({ORDER BY COL1 DESC}) AS ROWNUM FROM TABLENAME)

  WHERE ROWNUM

  或者

  SELECT COLUMN FROM TABLENAME FETCH FIRST N ROWS ONLY

  

  4. SQL Server数据库

  

  SELECT TOP N * FROM TABLENAME

  

  5. Sybase数据库

  

  SET ROWCOUNT N

  GO

  SELECT * FROM TABLENAME

  

  6. MySQL数据库

  

  SELECT * FROM TABLENAME LIMIT N

  

  7. FoxPro数据库

  

  SELECT * TOP N FROM TABLENAME ORDER BY COLUMN 

  

  Top关键字:

  1、首先引用一位网友出错的例子,sql="select top 30 * from data where title='"&title1&"' order by id desc"

  分析出错原因:sql语句里同时存在where和top语句的时候,并且where条件列不是合适的索引,程序执行的是全表扫描,首先是查找符合where条件的记录,而这里的top限制形同虚设。如果全表是百万级别以上的数据表,那么就这么一个简单的判断,就有可能拖垮数据库。

  2、解决办法就是去掉where条件筛选语句,如果你希望使用selcet top语句,并且还要附带where条件,那么条件中的列就得是合适的索引,如聚集索引、复合索引里的主列等,同时,where条件里也要尽量避开使用函数,or,判断NULL等会引起全部扫描的语句。这一点要记住,不然执行的是全表扫描。

  3、如何选出第N条到第2N条记录呢。这样的sql语句就可以了:

  “select top n * from TABLE_NAME where id not in (select top n id from TABLE_NAME order by id desc)"

  4、对Top基本理解下(TOP 和 SET ROWCOUNT)

  SELECT 语句中的TOP子句限制单个查询返回的行数,而SET ROWCOUNT限制所有后续查询影响的行数。在很多编程任务中这些命令提供了高效率。

  

  SET ROWCOUNT在SELECT,INSERT,UPDATE OR DELETE语句中设置可以被影响的最大行数。这些设置在命令执行时马上生效并且只影响当前的会话。为了移除这个限制执行SET ROWCOUNT 0。一些实际的任务用TOP or SET ROWCOUNT比用标准的SQL命令对编程是更有效率的。让我们在几个例子中证明:

  

  在几乎所有的数据库中最流行的一个查询是请求一个列表中的前N项。在 pubs数据库案例中,我们可以查找销售最好CD的前五项。比较用TOP,SET ROWCOUNT和使用ANSI SQL的三种方案。

  (1)Select title,ytd_salesFrom titlesa Where (select count(*)From titlesb Where b.ytd_sales>a.ytd_sales)

  这个纯ANSI SQL方案执行一个效率可能很低的关联子查询,特别的在这个例子中,在ytd_sales上没有索引支持。另外,这个纯的标准SQL命令没有过滤掉在ytd_sales的空值,也没有区别多个CD间有关联的情况。

  (2)SET ROWCOUNT 5 SELECT title, ytd_salesFROM titlesORDER BY ytd_sales DESCSET ROWCOUNT 0

  (3)SELECT TOP 5 title, ytd_salesFROM titlesORDER BY ytd_sales DESC

  第二个方案使用SET ROWCOUNT来停止SELECT查询,而第三个方案是当它找到前五行时用TOP n来停止。在这种情况下,在获得结果之前我们也要有一个ORDER BY子句强制对整个表进行排序。两个查询的查询计划实际上是一样的。然而,TOP优于SET ROWCOUNT的关键点是SET必须处理ORDER BY子句所需的工作表,而TOP 不用。

  总结:在一个大表上,我们可以为表上创建一个索引以避免排序,查询将使用该索引找到前5行并停止。

  

  ROWNUM伪列:

  1、使用SELECT语句返回的结果集,希望按特定条件查询前N条记录,可以使用伪列ROWNUM。ROWNUM是对结果集加一个伪列,先查到结果集后再加上一个列,是符合条件结果的序列号;从1开始排起,只能用 = !=这些比较符合。

  ROWNUM对于等于某值的查询条件,比如查询第一条记录,可以使用ROWNUM=1作为条件;但是如果查询第二条记录写ROWNUM=2则查询不到数据,ROWNUM的=判断只对于1有效;

  2、同理,查询大于某值的查询条件,ROWNUM>n(n>1的自然数)这种条件不成立;那如何查询第一行以后的记录呢?

  solution:用子查询解决,但是必须为rownum设置别名,"select * from (select rownum no ,id,name from table1) where no >1";

  3、ROWNUM对于小于某值的查询是可以的,select * from table1 where rownum

  4、ROWNUM和排序

  Oracle中rownum是在取数据时产生的序号,想对指定排序的数据指定rownum行数据就要做处理了:

  "select rownum,id,name from table1 order by name",查询结果按name排序,但是rownum不是按1、2、3...排列,而是按记录插入时的顺序给记录排号;

  solution:使用子查询,select rownum ,id,name from(select * from table1 order by name)

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Go語言如何實作資料庫的增刪改查操作? Go語言如何實作資料庫的增刪改查操作? Mar 27, 2024 pm 09:39 PM

Go語言是一種高效、簡潔且易於學習的程式語言,因其在並發程式設計和網路程式設計方面的優勢而備受開發者青睞。在實際開發中,資料庫操作是不可或缺的一部分,本文將介紹如何使用Go語言實作資料庫的增刪改查操作。在Go語言中,我們通常會使用第三方函式庫來操作資料庫,例如常用的sql套件、gorm等。這裡以sql包為例介紹如何實作資料庫的增刪改查操作。假設我們使用的是MySQL資料庫。

Hibernate 如何實作多型映射? Hibernate 如何實作多型映射? Apr 17, 2024 pm 12:09 PM

Hibernate多態映射可映射繼承類別到資料庫,提供以下映射類型:joined-subclass:為子類別建立單獨表,包含父類別所有欄位。 table-per-class:為子類別建立單獨資料表,僅包含子類別特有列。 union-subclass:類似joined-subclass,但父類別表聯合所有子類別列。

iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 Jul 18, 2024 am 05:48 AM

蘋果公司最新發布的iOS18、iPadOS18以及macOSSequoia系統為Photos應用程式增添了一項重要功能,旨在幫助用戶輕鬆恢復因各種原因遺失或損壞的照片和影片。這項新功能在Photos應用的"工具"部分引入了一個名為"已恢復"的相冊,當用戶設備中存在未納入其照片庫的圖片或影片時,該相冊將自動顯示。 "已恢復"相簿的出現為因資料庫損壞、相機應用未正確保存至照片庫或第三方應用管理照片庫時照片和視頻丟失提供了解決方案。使用者只需簡單幾步

深入解析HTML如何讀取資料庫 深入解析HTML如何讀取資料庫 Apr 09, 2024 pm 12:36 PM

HTML無法直接讀取資料庫,但可以透過JavaScript和AJAX實作。其步驟包括建立資料庫連線、發送查詢、處理回應和更新頁面。本文提供了利用JavaScript、AJAX和PHP來從MySQL資料庫讀取資料的實戰範例,展示如何在HTML頁面中動態顯示查詢結果。此範例使用XMLHttpRequest建立資料庫連接,發送查詢並處理回應,從而將資料填入頁面元素中,實現了HTML讀取資料庫的功能。

如何在PHP中處理資料庫連線錯誤 如何在PHP中處理資料庫連線錯誤 Jun 05, 2024 pm 02:16 PM

PHP處理資料庫連線報錯,可以使用下列步驟:使用mysqli_connect_errno()取得錯誤代碼。使用mysqli_connect_error()取得錯誤訊息。透過擷取並記錄這些錯誤訊息,可以輕鬆識別並解決資料庫連接問題,確保應用程式的順暢運作。

在PHP中使用MySQLi建立資料庫連線的詳盡教學 在PHP中使用MySQLi建立資料庫連線的詳盡教學 Jun 04, 2024 pm 01:42 PM

如何在PHP中使用MySQLi建立資料庫連線:包含MySQLi擴充(require_once)建立連線函數(functionconnect_to_db)呼叫連線函數($conn=connect_to_db())執行查詢($result=$conn->query())關閉連線( $conn->close())

PHP處理資料庫中文亂碼的技巧與實踐 PHP處理資料庫中文亂碼的技巧與實踐 Mar 27, 2024 pm 05:21 PM

PHP是一種廣泛應用於網站開發的後端程式語言,它具有強大的資料庫操作功能,常用於與MySQL等資料庫進行互動。然而,由於中文字元編碼的複雜性,在處理資料庫中文亂碼時常常會出現問題。本文將介紹PHP處理資料庫中文亂碼的技巧與實踐,包括常見的亂碼原因、解決方法和具體的程式碼範例。常見的亂碼原因資料庫字元集設定不正確:資料庫建立時需選擇正確的字元集,如utf8或u

如何在 Golang 中使用資料庫回呼函數? 如何在 Golang 中使用資料庫回呼函數? Jun 03, 2024 pm 02:20 PM

在Golang中使用資料庫回呼函數可以實現:在指定資料庫操作完成後執行自訂程式碼。透過單獨的函數新增自訂行為,無需編寫額外程式碼。回調函數可用於插入、更新、刪除和查詢操作。必須使用sql.Exec、sql.QueryRow或sql.Query函數才能使用回呼函數。

See all articles