1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-02 22:58:01 +00:00

Add Fetch Specific Number Of Results as a Postgres TIL

This commit is contained in:
jbranchaud
2024-12-03 08:52:38 -06:00
parent b376f32a67
commit 9afe6503ec
2 changed files with 44 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
_1524 TILs and counting..._
_1525 TILs and counting..._
---
@@ -777,6 +777,7 @@ _1524 TILs and counting..._
- [Escaping String Literals With Dollar Quoting](postgres/escaping-string-literals-with-dollar-quoting.md)
- [Export Query Results To A CSV](postgres/export-query-results-to-a-csv.md)
- [Extracting Nested JSON Data](postgres/extracting-nested-json-data.md)
- [Fetch Specific Number Of Results](postgres/fetch-specific-number-of-results.md)
- [Find Duplicate Records In Table Without Unique Id](postgres/find-duplicate-records-in-table-without-unique-id.md)
- [Find Records That Contain Duplicate Values](postgres/find-records-that-contain-duplicate-values.md)
- [Find Records That Have Multiple Associated Records](postgres/find-records-that-have-multiple-associated-records.md)

View File

@@ -0,0 +1,42 @@
# Fetch Specific Number Of Results
If you pull up just about any intro to PostgreSQL (or even SQL), one of the
first things they are going to teach you is the `limit` clause. This is taught
as _the_ way for limiting the result set to a specific number of rows.
```sql
> select title from books limit 4;
+-----------------------+
| title |
|-----------------------|
| The Secret History |
| A Gentleman in Moscow |
| Exhalation: Stores |
| Annihilation |
+-----------------------+
SELECT 4
```
You might be as surprised as I was to learn that `limit` is not part of the SQL
standard. It is extremely common for this use case, but the SQL standard
defines `fetch first N rows only` as the way to fetch a specific number of
rows. As we can see, [it works identically to `limit
N`](https://www.postgresql.org/docs/current/sql-select.html#SQL-LIMIT).
```sql
> select title from books fetch first 4 rows only;
+-----------------------+
| title |
|-----------------------|
| The Secret History |
| A Gentleman in Moscow |
| Exhalation: Stores |
| Annihilation |
+-----------------------+
SELECT 4
```
The `rows` and `row` keywords are interchangeable which makes statements more
readable if, for instance, you're doing `... fetch first 1 row only`.
[source](https://www.cybertec-postgresql.com/en/postgresql-limit-vs-fetch-first-rows-with-ties/)