国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql如何限制查詢個數

2024-07-24 12:34:07
字體:
來源:轉載
供稿:網友
  當數據表中有上萬條數據時,一次性查詢出表中的全部數據會降低數據返回的速度,同時給數據庫服務器造成很大的壓力。這時就可以用 LIMIT 子句來限制查詢結果返回的條數。
 
  LIMIT 是 MySQL 中的一個特殊關鍵字,用于指定查詢結果從哪條記錄開始顯示,一共顯示多少條記錄。
 
  1. MySQL LIMIT子句簡介
  在SELECT語句中使用LIMIT子句來約束結果集中的行數。LIMIT子句接受一個或兩個參數。兩個參數的值必須為零或正整數。
 
  下面說明了兩個參數的LIMIT子句語法:
 
  SELECT
      column1,column2,...
  FROM
      table
  LIMIT offset , count;
  我們來查看LIMIT子句參數:
 
  offset參數指定要返回的第一行的偏移量。第一行的偏移量為0,而不是1。
  count指定要返回的最大行數。
 
  當您使用帶有一個參數的LIMIT子句時,此參數將用于確定從結果集的開頭返回的最大行數。
 
  SELECT
      column1,column2,...
  FROM
      table
  LIMIT count;
  上面的查詢等同于下面接受兩個參數的LIMIT子句的查詢:
 
  SELECT
      column1,column2,...
  FROM
      table
  LIMIT 0 , count;
  2. 使用MySQL LIMIT獲取前N行
  可以使用LIMIT子句來選擇表中的前N行記錄,如下所示:
 
  SELECT
      column1,column2,...
  FROM
      table
  LIMIT N;
  例如,要查詢employees表中前5個客戶,請使用以下查詢:
 
  SELECT customernumber, customername, creditlimit FROM customers LIMIT 5;
  或者 -
 
  SELECT customernumber, customername, creditlimit FROM customers LIMIT 0,5;
  執行上面語句,得到以下結果 -
 
  mysql> SELECT customernumber, customername, creditlimit FROM customers LIMIT 5;
  +----------------+----------------------------+-------------+
  | customernumber | customername               | creditlimit |
  +----------------+----------------------------+-------------+
  |            103 | Atelier graphique          | 21000       |
  |            112 | Signal Gift Stores         | 71800       |
  |            114 | Australian Collectors, Co. | 117300      |
  |            119 | La Rochelle Gifts          | 118200      |
  |            121 | Baane Mini Imports         | 81700       |
  +----------------+----------------------------+-------------+
  5 rows in set
  3. 使用MySQL LIMIT獲得最高和最低的值
  LIMIT子句經常與ORDER BY子句一起使用。首先,使用ORDER BY子句根據特定條件對結果集進行排序,然后使用LIMIT子句來查找最小或最大值。
 
  注意:ORDER BY子句按指定字段排序的使用。
 
  請參見示例數據庫(yiibaidb)中的以下customers表,其表結構如下所示 -
 
  mysql> desc customers;
  +------------------------+---------------+------+-----+---------+-------+
  | Field                  | Type          | Null | Key | Default | Extra |
  +------------------------+---------------+------+-----+---------+-------+
  | customerNumber         | int(11)       | NO   | PRI | NULL    |       |
  | customerName           | varchar(50)   | NO   |     | NULL    |       |
  | contactLastName        | varchar(50)   | NO   |     | NULL    |       |
  | contactFirstName       | varchar(50)   | NO   |     | NULL    |       |
  | phone                  | varchar(50)   | NO   |     | NULL    |       |
  | addressLine1           | varchar(50)   | NO   |     | NULL    |       |
  | addressLine2           | varchar(50)   | YES  |     | NULL    |       |
  | city                   | varchar(50)   | NO   |     | NULL    |       |
  | state                  | varchar(50)   | YES  |     | NULL    |       |
  | postalCode             | varchar(15)   | YES  |     | NULL    |       |
  | country                | varchar(50)   | NO   |     | NULL    |       |
  | salesRepEmployeeNumber | int(11)       | YES  | MUL | NULL    |       |
  | creditLimit            | decimal(10,2) | YES  |     | NULL    |       |
  +------------------------+---------------+------+-----+---------+-------+
  13 rows in set
  例如,要查詢信用額度最高的前五名客戶,請使用以下查詢:
 
  SELECT customernumber, customername, creditlimit
  FROM customers
  ORDER BY creditlimit DESC
  LIMIT 5;
  執行上面查詢語句,得到以下結果 -
 
  mysql> SELECT customernumber, customername, creditlimit
  FROM customers
  ORDER BY creditlimit DESC
  LIMIT 5;
  +----------------+------------------------------+-------------+
  | customernumber | customername                 | creditlimit |
  +----------------+------------------------------+-------------+
  |            141 | Euro+ Shopping Channel       | 227600      |
  |            124 | Mini Gifts Distributors Ltd. | 210500      |
  |            298 | Vida Sport, Ltd              | 141300      |
  |            151 | Muscle Machine Inc           | 138500      |
  |            187 | AV Stores, Co.               | 136800      |
  +----------------+------------------------------+-------------+
  5 rows in set
  以下查詢將返回信用限額最低的五位客戶:
 
  SELECT customernumber, customername, creditlimit
  FROM customers
  ORDER BY
   creditlimit ASC
  LIMIT 5;
  4. 使用MySQL LIMIT獲得第n個最高值
  MySQL中最棘手的問題之一是:如何獲得結果集中的第n個最高值,例如查詢第二(或第n)貴的產品是哪個,顯然不能使用MAX或MIN這樣的函數來查詢獲得。 但是,我們可以使用MySQL LIMIT來解決這樣的問題。
 
  首先,按照降序對結果集進行排序。
  第二步,使用LIMIT子句獲得第n貴的產品。
  通用查詢如下:
 
  SELECT
      column1, column2,...
  FROM
      table
  ORDER BY column1 DESC
  LIMIT nth-1, count;
  下面我們來看看一個例子,將使用示例數據庫(yiibaidb)中的產品(products)表來進行演示。products表的結構如下所示 -
 
  mysql> desc products;
  +--------------------+---------------+------+-----+---------+-------+
  | Field              | Type          | Null | Key | Default | Extra |
  +--------------------+---------------+------+-----+---------+-------+
  | productCode        | varchar(15)   | NO   | PRI | NULL    |       |
  | productName        | varchar(70)   | NO   |     | NULL    |       |
  | productLine        | varchar(50)   | NO   | MUL | NULL    |       |
  | productScale       | varchar(10)   | NO   |     | NULL    |       |
  | productVendor      | varchar(50)   | NO   |     | NULL    |       |
  | productDescription | text          | NO   |     | NULL    |       |
  | quantityInStock    | smallint(6)   | NO   |     | NULL    |       |
  | buyPrice           | decimal(10,2) | NO   |     | NULL    |       |
  | MSRP               | decimal(10,2) | NO   |     | NULL    |       |
  +--------------------+---------------+------+-----+---------+-------+
  9 rows in set
  查看以下產品表中的行記錄:
 
  mysql> SELECT productCode, productName, buyprice
  FROM products
  ORDER BY
   buyprice DESC;
  +-------------+--------------------------------------+----------+
  | productCode | productName                          | buyprice |
  +-------------+--------------------------------------+----------+
  | S10_4962    | 1962 LanciaA Delta 16V               | 103.42   |
  | S18_2238    | 1998 Chrysler Plymouth Prowler       | 101.51   |
  | S10_1949    | 1952 Alpine Renault 1300             | 98.58    |
  | S24_3856    | 1956 Porsche 356A Coupe              | 98.3     |
  | S12_1108    | 2001 Ferrari Enzo                    | 95.59    |
  | S12_1099    | 1968 Ford Mustang                    | 95.34    |
  ... ....
  +-------------+--------------------------------------+----------+
  110 rows in set
  我們的任務找出結果集中價格第二高的產品。可以使用LIMIT子句來選擇第二行,如以下查詢(注意:偏移量從0開始,所以要指定從1開始,然后取一行記錄):
 
  SELECT productCode, productName, buyprice FROM  products
  ORDER BY buyprice DESC
  LIMIT 1, 1;
  執行上面查詢語句,得到以下結果 -
 
  mysql> SELECT productCode, productName, buyprice FROM  products
  ORDER BY buyprice DESC
  LIMIT 1, 1;
  +-------------+--------------------------------+----------+
  | productCode | productName                    | buyprice |
  +-------------+--------------------------------+----------+
  | S18_2238    | 1998 Chrysler Plymouth Prowler | 101.51   |
  +-------------+--------------------------------+----------+
  1 row in set
  類似的,獲取售價第三高、第四高的產品信息為:LIMIT 2, 1 和 LIMIT 3, 1。
 
  感謝你能夠認真閱讀完這篇文章,希望小編分享的“mysql如何限制查詢個數”這篇文章對大家有幫助。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梁山县| 延边| 泸州市| 红桥区| 安宁市| 湛江市| 延寿县| 云和县| 鄂州市| 台山市| 专栏| 房山区| 贵州省| 保靖县| 蒲城县| 云林县| 昭觉县| 广昌县| 桃源县| 翁牛特旗| 天镇县| 察雅县| 荃湾区| 宜丰县| 德州市| 灵山县| 镇赉县| 汉阴县| 屯门区| 如皋市| 乌兰县| 泾川县| 西充县| 左云县| 海原县| 吕梁市| 瓦房店市| 四会市| 迭部县| 衡南县| 鄂伦春自治旗|