域名 AXUM.RS 将于2025年10月到期。我们无意再对其进行续费,我们希望你能够接续这个域名,让更多 AXUM 开发者继续受益。
  • 方案1️⃣AXUM.RS 域名 = 3000
  • 方案2️⃣方案1️⃣ + 本站所有专题原始 Markdown 文档 = 5000
  • 方案3️⃣方案2️⃣ + 本站原始数据库 = 5500
如果你有意接续这份 AXUM 情怀,请与我们取得联系。
说明:
  1. 如果有人购买 AXUM.RS 域名(方案1️⃣),或者该域名到期,本站将启用新的免费域名继续提供服务。
  2. 如果有人购买了 AXUM.RS 域名,且同时购买了内容和/或数据库(方案2️⃣/方案3️⃣),本站将关闭。届时我们或许会以另一种方式与你再相遇。

LIMIT、OFFSET 和 FETCH 子句

我们先来看一下大部分数据库都支持的、日常开发最熟悉的 LIMIT,虽然 FETCH 才是 SQL 标准,但是 LIMIT 无疑是在日常中用的最多的。

LIMITOFFSET 子句

  • LIMIT n OFFSET m 典型应用就是翻页
  • MySQL 8 开始支持 LIMIT n OFFSET m 语法
                                              Table "public.film"
      Column      |            Type             | Collation | Nullable |                Default                
------------------+-----------------------------+-----------+----------+---------------------------------------
 film_id          | integer                     |           | not null | nextval('film_film_id_seq'::regclass)
 title            | character varying(255)      |           | not null | 
 description      | text                        |           |          | 
 release_year     | year                        |           |          | 
 language_id      | smallint                    |           | not null | 
 rental_duration  | smallint                    |           | not null | 3
 rental_rate      | numeric(4,2)                |           | not null | 4.99
 length           | smallint                    |           |          | 
 replacement_cost | numeric(5,2)                |           | not null | 19.99
 rating           | mpaa_rating                 |           |          | 'G'::mpaa_rating
 last_update      | timestamp without time zone |           | not null | now()
 special_features | text[]                      |           |          | 
 fulltext         | tsvector                    |           | not null | 

示例如下:

-- 返回按 film_id 升序排序的前5部电影
SELECT film_id, title, release_year FROM film ORDER BY film_id LIMIT 5;

-- 返回跳过3部电影之后,按 film_id 升序排序的前4部电影
SELECT film_id, title, release_year FROM film ORDER BY film_id LIMIT 4 OFFSET 3;

-- 返回租赁费用最高的10部电影
SELECT film_id, title, rental_rate FROM film ORDER BY rental_rate DESC LIMIT 10;
-- 返回按标题升序排序的第一部电影
SELECT film_id, title FROM film ORDER BY title FETCH FRIST ROW ONLY;

-- 等同于上例 
SELECT film_id, title FROM film ORDER BY title FETCH FRIST 1 ROW ONLY;

-- 返回按标题升序排序的前5部电影
SELECT film_id, title FROM film ORDER BY title FETCH FRIST 5 ROW ONLY;

-- 返回跳过5部电影之后,按标题升序排序的前5部电影
SELECT film_id, title FROM film ORDER BY title OFFSET 5 ROWS FETCH FRIST 5 ROW ONLY;
要查看完整内容,请先登录