SELECT TOP 子句用于規(guī)定要返回的記錄的數(shù)目。
SELECT TOP 子句對于擁有數(shù)千條記錄的大型表來說,是非常有用的。
注釋:并非所有的數(shù)據(jù)庫系統(tǒng)都支持 SELECT TOP 子句。
在本教程中,我們將使用 RUNOOB 樣本數(shù)據(jù)庫。
下面是選自 "Websites" 表的數(shù)據(jù):
mysql> SELECT * FROM Websites; +----+---------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+---------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘寶 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鳥教程 | http://www.runoob.com/ | 5000 | USA | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
下面的 SQL 語句從 "Websites" 表中選取頭兩條記錄:
執(zhí)行以上 SQL,數(shù)據(jù)如下所示:
在 Microsoft SQL Server 中還可以使用百分比作為參數(shù)。
下面的 SQL 語句從 "Customers" 表中選取前面 50% 的記錄:
以下操作在 Microsoft SQL Server 數(shù)據(jù)庫中可執(zhí)行。
用慣了access mssql server的朋友,可能在用mysql查詢前N條記錄時,習慣的使用select top n 形式的語句,在這里說明一下,mysql沒有此語法,mysql用limit來實現(xiàn)相關功能,而且功能更加強大,GOOD。以下是limit在mysql中的使用詳解:
語法:
SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
LIMIT 子句可以被用于強制 SELECT 語句返回指定的記錄數(shù)。LIMIT 接受一個或兩個數(shù)字參數(shù)。參數(shù)必須是一個整數(shù)常量。
如果給定兩個參數(shù),第一個參數(shù)指定第一個返回記錄行的偏移量,第二個參數(shù)指定返回記錄行的最大數(shù)目。
初始記錄行的偏移量是 0(而不是 1): 為了與 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。
mysql> SELECT * FROM table LIMIT 5,10; // 檢索記錄行 6-15 ,注意,10為偏移量
//為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數(shù)為 -1:
mysql> SELECT * FROM table LIMIT 95,-1; // 檢索記錄行 96-last.
//如果只給定一個參數(shù),它表示返回最大的記錄行數(shù)目:
mysql> SELECT * FROM table LIMIT 5; //檢索前 5 個記錄行 //也就是說,LIMIT n 等價于 LIMIT 0,n。
如果你想得到最后幾條數(shù)據(jù)可以多加個 order by id desc
mysql不支持select top n的語法,應該用這個替換:
select * from tablename order by orderfield desc/asc limit position, counter;
position 指示從哪里開始查詢,如果是0則是從頭開始,counter 表示查詢的個數(shù)
取前15條記錄:
select * from tablename order by orderfield desc/asc limit 0,15
如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點擊進入論壇