Chapter 22: PostgreSQL LIMIT
Part 1: What is the LIMIT Clause?
The LIMIT clause restricts the number of rows returned by a query. It’s typically used with ORDER BY to get meaningful subsets like “top 10 bestsellers” or “most recent 5 orders.”
The Basic Syntax
|
0 1 2 3 4 5 6 7 8 9 10 |
<span class="token keyword">SELECT</span> column1<span class="token punctuation">,</span> column2<span class="token punctuation">,</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">FROM</span> table_name <span class="token punctuation">[</span><span class="token keyword">WHERE</span> condition<span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">ORDER</span> <span class="token keyword">BY</span> <span class="token keyword">column</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">]</span> <span class="token keyword">LIMIT</span> row_count<span class="token punctuation">;</span> |
The row_count specifies the maximum number of rows to return.
Part 2: Setting Up Our Example Data
Let’s create a comprehensive dataset to explore all the ways LIMIT can be used:
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
<span class="token comment">-- Create an e-commerce database</span> <span class="token keyword">CREATE</span> <span class="token keyword">TABLE</span> products <span class="token punctuation">(</span> product_id <span class="token keyword">SERIAL</span> <span class="token keyword">PRIMARY</span> <span class="token keyword">KEY</span><span class="token punctuation">,</span> name <span class="token keyword">VARCHAR</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">,</span> category <span class="token keyword">VARCHAR</span><span class="token punctuation">(</span><span class="token number">50</span><span class="token punctuation">)</span><span class="token punctuation">,</span> price <span class="token keyword">DECIMAL</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span> stock_quantity <span class="token keyword">INTEGER</span><span class="token punctuation">,</span> rating <span class="token keyword">DECIMAL</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span> review_count <span class="token keyword">INTEGER</span><span class="token punctuation">,</span> created_date <span class="token keyword">DATE</span><span class="token punctuation">,</span> last_sold_date <span class="token keyword">DATE</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">-- Insert 50 products with varied data</span> <span class="token keyword">INSERT</span> <span class="token keyword">INTO</span> products <span class="token punctuation">(</span>name<span class="token punctuation">,</span> category<span class="token punctuation">,</span> price<span class="token punctuation">,</span> stock_quantity<span class="token punctuation">,</span> rating<span class="token punctuation">,</span> review_count<span class="token punctuation">,</span> created_date<span class="token punctuation">,</span> last_sold_date<span class="token punctuation">)</span> <span class="token keyword">VALUES</span> <span class="token punctuation">(</span><span class="token string">'Wireless Headphones'</span><span class="token punctuation">,</span> <span class="token string">'Electronics'</span><span class="token punctuation">,</span> <span class="token number">89.99</span><span class="token punctuation">,</span> <span class="token number">45</span><span class="token punctuation">,</span> <span class="token number">4.7</span><span class="token punctuation">,</span> <span class="token number">1250</span><span class="token punctuation">,</span> <span class="token string">'2024-01-15'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-10'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Gaming Mouse'</span><span class="token punctuation">,</span> <span class="token string">'Electronics'</span><span class="token punctuation">,</span> <span class="token number">49.99</span><span class="token punctuation">,</span> <span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">890</span><span class="token punctuation">,</span> <span class="token string">'2024-01-20'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-12'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Mechanical Keyboard'</span><span class="token punctuation">,</span> <span class="token string">'Electronics'</span><span class="token punctuation">,</span> <span class="token number">129.99</span><span class="token punctuation">,</span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token number">4.8</span><span class="token punctuation">,</span> <span class="token number">2100</span><span class="token punctuation">,</span> <span class="token string">'2024-01-10'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-11'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'4K Monitor'</span><span class="token punctuation">,</span> <span class="token string">'Electronics'</span><span class="token punctuation">,</span> <span class="token number">399.99</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">4.6</span><span class="token punctuation">,</span> <span class="token number">450</span><span class="token punctuation">,</span> <span class="token string">'2024-01-05'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-09'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'USB-C Hub'</span><span class="token punctuation">,</span> <span class="token string">'Electronics'</span><span class="token punctuation">,</span> <span class="token number">39.99</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">4.3</span><span class="token punctuation">,</span> <span class="token number">320</span><span class="token punctuation">,</span> <span class="token string">'2024-01-25'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-08'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Coffee Maker'</span><span class="token punctuation">,</span> <span class="token string">'Appliances'</span><span class="token punctuation">,</span> <span class="token number">79.99</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">4.4</span><span class="token punctuation">,</span> <span class="token number">180</span><span class="token punctuation">,</span> <span class="token string">'2024-01-12'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-07'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Blender'</span><span class="token punctuation">,</span> <span class="token string">'Appliances'</span><span class="token punctuation">,</span> <span class="token number">129.99</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">4.6</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">,</span> <span class="token string">'2024-01-18'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-06'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Toaster'</span><span class="token punctuation">,</span> <span class="token string">'Appliances'</span><span class="token punctuation">,</span> <span class="token number">34.99</span><span class="token punctuation">,</span> <span class="token number">55</span><span class="token punctuation">,</span> <span class="token number">4.2</span><span class="token punctuation">,</span> <span class="token number">110</span><span class="token punctuation">,</span> <span class="token string">'2024-01-22'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-05'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Air Fryer'</span><span class="token punctuation">,</span> <span class="token string">'Appliances'</span><span class="token punctuation">,</span> <span class="token number">149.99</span><span class="token punctuation">,</span> <span class="token number">15</span><span class="token punctuation">,</span> <span class="token number">4.8</span><span class="token punctuation">,</span> <span class="token number">520</span><span class="token punctuation">,</span> <span class="token string">'2024-01-08'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-10'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Microwave'</span><span class="token punctuation">,</span> <span class="token string">'Appliances'</span><span class="token punctuation">,</span> <span class="token number">199.99</span><span class="token punctuation">,</span> <span class="token number">12</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">230</span><span class="token punctuation">,</span> <span class="token string">'2024-01-28'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-04'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Desk Chair'</span><span class="token punctuation">,</span> <span class="token string">'Furniture'</span><span class="token punctuation">,</span> <span class="token number">249.99</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">4.7</span><span class="token punctuation">,</span> <span class="token number">180</span><span class="token punctuation">,</span> <span class="token string">'2024-01-03'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-03'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Standing Desk'</span><span class="token punctuation">,</span> <span class="token string">'Furniture'</span><span class="token punctuation">,</span> <span class="token number">499.99</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">4.9</span><span class="token punctuation">,</span> <span class="token number">320</span><span class="token punctuation">,</span> <span class="token string">'2024-01-07'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-02'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Bookshelf'</span><span class="token punctuation">,</span> <span class="token string">'Furniture'</span><span class="token punctuation">,</span> <span class="token number">159.99</span><span class="token punctuation">,</span> <span class="token number">12</span><span class="token punctuation">,</span> <span class="token number">4.4</span><span class="token punctuation">,</span> <span class="token number">95</span><span class="token punctuation">,</span> <span class="token string">'2024-01-14'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-01'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Lamp'</span><span class="token punctuation">,</span> <span class="token string">'Furniture'</span><span class="token punctuation">,</span> <span class="token number">45.99</span><span class="token punctuation">,</span> <span class="token number">40</span><span class="token punctuation">,</span> <span class="token number">4.3</span><span class="token punctuation">,</span> <span class="token number">140</span><span class="token punctuation">,</span> <span class="token string">'2024-01-19'</span><span class="token punctuation">,</span> <span class="token string">'2024-01-31'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Office Cabinet'</span><span class="token punctuation">,</span> <span class="token string">'Furniture'</span><span class="token punctuation">,</span> <span class="token number">189.99</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">65</span><span class="token punctuation">,</span> <span class="token string">'2024-01-24'</span><span class="token punctuation">,</span> <span class="token string">'2024-01-30'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Running Shoes'</span><span class="token punctuation">,</span> <span class="token string">'Sports'</span><span class="token punctuation">,</span> <span class="token number">89.99</span><span class="token punctuation">,</span> <span class="token number">60</span><span class="token punctuation">,</span> <span class="token number">4.6</span><span class="token punctuation">,</span> <span class="token number">420</span><span class="token punctuation">,</span> <span class="token string">'2024-01-02'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-09'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Yoga Mat'</span><span class="token punctuation">,</span> <span class="token string">'Sports'</span><span class="token punctuation">,</span> <span class="token number">24.99</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">380</span><span class="token punctuation">,</span> <span class="token string">'2024-01-09'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-08'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Dumbbells Set'</span><span class="token punctuation">,</span> <span class="token string">'Sports'</span><span class="token punctuation">,</span> <span class="token number">79.99</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">4.7</span><span class="token punctuation">,</span> <span class="token number">210</span><span class="token punctuation">,</span> <span class="token string">'2024-01-16'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-07'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Water Bottle'</span><span class="token punctuation">,</span> <span class="token string">'Sports'</span><span class="token punctuation">,</span> <span class="token number">14.99</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">4.4</span><span class="token punctuation">,</span> <span class="token number">160</span><span class="token punctuation">,</span> <span class="token string">'2024-01-21'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-06'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Gym Bag'</span><span class="token punctuation">,</span> <span class="token string">'Sports'</span><span class="token punctuation">,</span> <span class="token number">39.99</span><span class="token punctuation">,</span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token number">4.3</span><span class="token punctuation">,</span> <span class="token number">95</span><span class="token punctuation">,</span> <span class="token string">'2024-01-26'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-05'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'The Great Gatsby'</span><span class="token punctuation">,</span> <span class="token string">'Books'</span><span class="token punctuation">,</span> <span class="token number">11.99</span><span class="token punctuation">,</span> <span class="token number">85</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">1250</span><span class="token punctuation">,</span> <span class="token string">'2024-01-04'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-04'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'1984'</span><span class="token punctuation">,</span> <span class="token string">'Books'</span><span class="token punctuation">,</span> <span class="token number">10.99</span><span class="token punctuation">,</span> <span class="token number">92</span><span class="token punctuation">,</span> <span class="token number">4.7</span><span class="token punctuation">,</span> <span class="token number">2100</span><span class="token punctuation">,</span> <span class="token string">'2024-01-11'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-03'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'To Kill a Mockingbird'</span><span class="token punctuation">,</span> <span class="token string">'Books'</span><span class="token punctuation">,</span> <span class="token number">12.99</span><span class="token punctuation">,</span> <span class="token number">78</span><span class="token punctuation">,</span> <span class="token number">4.8</span><span class="token punctuation">,</span> <span class="token number">1850</span><span class="token punctuation">,</span> <span class="token string">'2024-01-17'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-02'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Pride and Prejudice'</span><span class="token punctuation">,</span> <span class="token string">'Books'</span><span class="token punctuation">,</span> <span class="token number">9.99</span><span class="token punctuation">,</span> <span class="token number">110</span><span class="token punctuation">,</span> <span class="token number">4.6</span><span class="token punctuation">,</span> <span class="token number">950</span><span class="token punctuation">,</span> <span class="token string">'2024-01-23'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-01'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'The Hobbit'</span><span class="token punctuation">,</span> <span class="token string">'Books'</span><span class="token punctuation">,</span> <span class="token number">14.99</span><span class="token punctuation">,</span> <span class="token number">65</span><span class="token punctuation">,</span> <span class="token number">4.9</span><span class="token punctuation">,</span> <span class="token number">3200</span><span class="token punctuation">,</span> <span class="token string">'2024-01-27'</span><span class="token punctuation">,</span> <span class="token string">'2024-01-31'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'T-shirt'</span><span class="token punctuation">,</span> <span class="token string">'Clothing'</span><span class="token punctuation">,</span> <span class="token number">19.99</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">4.4</span><span class="token punctuation">,</span> <span class="token number">420</span><span class="token punctuation">,</span> <span class="token string">'2024-01-06'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-10'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Jeans'</span><span class="token punctuation">,</span> <span class="token string">'Clothing'</span><span class="token punctuation">,</span> <span class="token number">49.99</span><span class="token punctuation">,</span> <span class="token number">85</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">380</span><span class="token punctuation">,</span> <span class="token string">'2024-01-13'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-09'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Jacket'</span><span class="token punctuation">,</span> <span class="token string">'Clothing'</span><span class="token punctuation">,</span> <span class="token number">89.99</span><span class="token punctuation">,</span> <span class="token number">42</span><span class="token punctuation">,</span> <span class="token number">4.7</span><span class="token punctuation">,</span> <span class="token number">210</span><span class="token punctuation">,</span> <span class="token string">'2024-01-20'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-08'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Socks (3-pack)'</span><span class="token punctuation">,</span> <span class="token string">'Clothing'</span><span class="token punctuation">,</span> <span class="token number">12.99</span><span class="token punctuation">,</span> <span class="token number">300</span><span class="token punctuation">,</span> <span class="token number">4.3</span><span class="token punctuation">,</span> <span class="token number">160</span><span class="token punctuation">,</span> <span class="token string">'2024-01-25'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-07'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Hat'</span><span class="token punctuation">,</span> <span class="token string">'Clothing'</span><span class="token punctuation">,</span> <span class="token number">24.99</span><span class="token punctuation">,</span> <span class="token number">55</span><span class="token punctuation">,</span> <span class="token number">4.2</span><span class="token punctuation">,</span> <span class="token number">95</span><span class="token punctuation">,</span> <span class="token string">'2024-01-29'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-06'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Shampoo'</span><span class="token punctuation">,</span> <span class="token string">'Beauty'</span><span class="token punctuation">,</span> <span class="token number">8.99</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">320</span><span class="token punctuation">,</span> <span class="token string">'2024-01-01'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-05'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Conditioner'</span><span class="token punctuation">,</span> <span class="token string">'Beauty'</span><span class="token punctuation">,</span> <span class="token number">8.99</span><span class="token punctuation">,</span> <span class="token number">145</span><span class="token punctuation">,</span> <span class="token number">4.4</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">,</span> <span class="token string">'2024-01-08'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-04'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Face Cream'</span><span class="token punctuation">,</span> <span class="token string">'Beauty'</span><span class="token punctuation">,</span> <span class="token number">24.99</span><span class="token punctuation">,</span> <span class="token number">60</span><span class="token punctuation">,</span> <span class="token number">4.7</span><span class="token punctuation">,</span> <span class="token number">180</span><span class="token punctuation">,</span> <span class="token string">'2024-01-15'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-03'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Sunscreen'</span><span class="token punctuation">,</span> <span class="token string">'Beauty'</span><span class="token punctuation">,</span> <span class="token number">15.99</span><span class="token punctuation">,</span> <span class="token number">90</span><span class="token punctuation">,</span> <span class="token number">4.6</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token string">'2024-01-22'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-02'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Lip Balm'</span><span class="token punctuation">,</span> <span class="token string">'Beauty'</span><span class="token punctuation">,</span> <span class="token number">4.99</span><span class="token punctuation">,</span> <span class="token number">400</span><span class="token punctuation">,</span> <span class="token number">4.3</span><span class="token punctuation">,</span> <span class="token number">210</span><span class="token punctuation">,</span> <span class="token string">'2024-01-27'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-01'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Dog Food (10lb)'</span><span class="token punctuation">,</span> <span class="token string">'Pets'</span><span class="token punctuation">,</span> <span class="token number">29.99</span><span class="token punctuation">,</span> <span class="token number">45</span><span class="token punctuation">,</span> <span class="token number">4.7</span><span class="token punctuation">,</span> <span class="token number">180</span><span class="token punctuation">,</span> <span class="token string">'2024-01-03'</span><span class="token punctuation">,</span> <span class="token string">'2024-01-30'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Cat Litter'</span><span class="token punctuation">,</span> <span class="token string">'Pets'</span><span class="token punctuation">,</span> <span class="token number">19.99</span><span class="token punctuation">,</span> <span class="token number">60</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">140</span><span class="token punctuation">,</span> <span class="token string">'2024-01-10'</span><span class="token punctuation">,</span> <span class="token string">'2024-01-29'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Dog Toy'</span><span class="token punctuation">,</span> <span class="token string">'Pets'</span><span class="token punctuation">,</span> <span class="token number">9.99</span><span class="token punctuation">,</span> <span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">4.4</span><span class="token punctuation">,</span> <span class="token number">95</span><span class="token punctuation">,</span> <span class="token string">'2024-01-17'</span><span class="token punctuation">,</span> <span class="token string">'2024-01-28'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Cat Bed'</span><span class="token punctuation">,</span> <span class="token string">'Pets'</span><span class="token punctuation">,</span> <span class="token number">34.99</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">4.6</span><span class="token punctuation">,</span> <span class="token number">75</span><span class="token punctuation">,</span> <span class="token string">'2024-01-24'</span><span class="token punctuation">,</span> <span class="token string">'2024-01-27'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Fish Food'</span><span class="token punctuation">,</span> <span class="token string">'Pets'</span><span class="token punctuation">,</span> <span class="token number">5.99</span><span class="token punctuation">,</span> <span class="token number">80</span><span class="token punctuation">,</span> <span class="token number">4.3</span><span class="token punctuation">,</span> <span class="token number">45</span><span class="token punctuation">,</span> <span class="token string">'2024-01-28'</span><span class="token punctuation">,</span> <span class="token string">'2024-01-26'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Notebook'</span><span class="token punctuation">,</span> <span class="token string">'Stationery'</span><span class="token punctuation">,</span> <span class="token number">3.99</span><span class="token punctuation">,</span> <span class="token number">500</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">320</span><span class="token punctuation">,</span> <span class="token string">'2024-01-05'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-10'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Pen Set'</span><span class="token punctuation">,</span> <span class="token string">'Stationery'</span><span class="token punctuation">,</span> <span class="token number">7.99</span><span class="token punctuation">,</span> <span class="token number">350</span><span class="token punctuation">,</span> <span class="token number">4.4</span><span class="token punctuation">,</span> <span class="token number">210</span><span class="token punctuation">,</span> <span class="token string">'2024-01-12'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-09'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Desk Organizer'</span><span class="token punctuation">,</span> <span class="token string">'Stationery'</span><span class="token punctuation">,</span> <span class="token number">16.99</span><span class="token punctuation">,</span> <span class="token number">90</span><span class="token punctuation">,</span> <span class="token number">4.6</span><span class="token punctuation">,</span> <span class="token number">95</span><span class="token punctuation">,</span> <span class="token string">'2024-01-19'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-08'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Stapler'</span><span class="token punctuation">,</span> <span class="token string">'Stationery'</span><span class="token punctuation">,</span> <span class="token number">8.99</span><span class="token punctuation">,</span> <span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">4.3</span><span class="token punctuation">,</span> <span class="token number">75</span><span class="token punctuation">,</span> <span class="token string">'2024-01-26'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-07'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Paper Clips (box)'</span><span class="token punctuation">,</span> <span class="token string">'Stationery'</span><span class="token punctuation">,</span> <span class="token number">2.99</span><span class="token punctuation">,</span> <span class="token number">1000</span><span class="token punctuation">,</span> <span class="token number">4.2</span><span class="token punctuation">,</span> <span class="token number">45</span><span class="token punctuation">,</span> <span class="token string">'2024-01-30'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-06'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'LED Strip Lights'</span><span class="token punctuation">,</span> <span class="token string">'Home'</span><span class="token punctuation">,</span> <span class="token number">29.99</span><span class="token punctuation">,</span> <span class="token number">75</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">180</span><span class="token punctuation">,</span> <span class="token string">'2024-01-07'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-05'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Throw Pillow'</span><span class="token punctuation">,</span> <span class="token string">'Home'</span><span class="token punctuation">,</span> <span class="token number">19.99</span><span class="token punctuation">,</span> <span class="token number">60</span><span class="token punctuation">,</span> <span class="token number">4.4</span><span class="token punctuation">,</span> <span class="token number">95</span><span class="token punctuation">,</span> <span class="token string">'2024-01-14'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-04'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Curtains'</span><span class="token punctuation">,</span> <span class="token string">'Home'</span><span class="token punctuation">,</span> <span class="token number">39.99</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">4.6</span><span class="token punctuation">,</span> <span class="token number">75</span><span class="token punctuation">,</span> <span class="token string">'2024-01-21'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-03'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Rug'</span><span class="token punctuation">,</span> <span class="token string">'Home'</span><span class="token punctuation">,</span> <span class="token number">89.99</span><span class="token punctuation">,</span> <span class="token number">15</span><span class="token punctuation">,</span> <span class="token number">4.7</span><span class="token punctuation">,</span> <span class="token number">120</span><span class="token punctuation">,</span> <span class="token string">'2024-01-28'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-02'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Wall Clock'</span><span class="token punctuation">,</span> <span class="token string">'Home'</span><span class="token punctuation">,</span> <span class="token number">24.99</span><span class="token punctuation">,</span> <span class="token number">40</span><span class="token punctuation">,</span> <span class="token number">4.3</span><span class="token punctuation">,</span> <span class="token number">55</span><span class="token punctuation">,</span> <span class="token string">'2024-02-01'</span><span class="token punctuation">,</span> <span class="token string">'2024-02-01'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
Part 3: Basic LIMIT Usage
1. Simple LIMIT – First N Rows
The most basic use – get the first 5 products from the table:
|
0 1 2 3 4 5 6 7 8 |
<span class="token keyword">SELECT</span> product_id<span class="token punctuation">,</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> category <span class="token keyword">FROM</span> products <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Result:
| product_id | name | price | category |
|---|---|---|---|
| 1 | Wireless Headphones | 89.99 | Electronics |
| 2 | Gaming Mouse | 49.99 | Electronics |
| 3 | Mechanical Keyboard | 129.99 | Electronics |
| 4 | 4K Monitor | 399.99 | Electronics |
| 5 | USB-C Hub | 39.99 | Electronics |
Important: Without ORDER BY, the rows are returned in whatever order PostgreSQL finds them (usually insertion order, but not guaranteed). This is rarely what you want!
2. LIMIT with ORDER BY – Getting Meaningful Results
This is the real power of LIMIT – combine it with ORDER BY to get top or bottom results:
|
0 1 2 3 4 5 6 7 8 9 10 |
<span class="token comment">-- Top 5 most expensive products</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> category <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Result:
| name | price | category |
|---|---|---|
| Standing Desk | 499.99 | Furniture |
| 4K Monitor | 399.99 | Electronics |
| Desk Chair | 249.99 | Furniture |
| Microwave | 199.99 | Appliances |
| Office Cabinet | 189.99 | Furniture |
|
0 1 2 3 4 5 6 7 8 9 10 11 |
<span class="token comment">-- Top 5 cheapest products</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> category <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> price <span class="token operator">IS</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">ASC</span> <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Result:
| name | price | category |
|---|---|---|
| Paper Clips (box) | 2.99 | Stationery |
| Notebook | 3.99 | Stationery |
| Lip Balm | 4.99 | Beauty |
| Fish Food | 5.99 | Pets |
| Pen Set | 7.99 | Stationery |
3. LIMIT with WHERE – Filtered Top Results
|
0 1 2 3 4 5 6 7 8 9 10 11 |
<span class="token comment">-- Top 5 highest-rated electronics</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> rating<span class="token punctuation">,</span> price <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> category <span class="token operator">=</span> <span class="token string">'Electronics'</span> <span class="token operator">AND</span> rating <span class="token operator">IS</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> rating <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Result:
| name | rating | price |
|---|---|---|
| Mechanical Keyboard | 4.8 | 129.99 |
| Wireless Headphones | 4.7 | 89.99 |
| 4K Monitor | 4.6 | 399.99 |
| Gaming Mouse | 4.5 | 49.99 |
| USB-C Hub | 4.3 | 39.99 |
Part 4: LIMIT with OFFSET – Pagination
This is one of the most common real-world uses of LIMIT – implementing pagination. The OFFSET clause skips a specified number of rows before starting to return rows.
Basic Syntax with OFFSET
|
0 1 2 3 4 5 6 7 8 9 |
<span class="token keyword">SELECT</span> column1<span class="token punctuation">,</span> column2<span class="token punctuation">,</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">FROM</span> table_name <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> <span class="token keyword">column</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span> <span class="token keyword">LIMIT</span> row_count <span class="token keyword">OFFSET</span> skip_count<span class="token punctuation">;</span> |
1. Simple Pagination
Show products 11-20 (page 2 with 10 items per page):
|
0 1 2 3 4 5 6 7 8 9 |
<span class="token keyword">SELECT</span> product_id<span class="token punctuation">,</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> category <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> product_id <span class="token keyword">LIMIT</span> <span class="token number">10</span> <span class="token keyword">OFFSET</span> <span class="token number">10</span><span class="token punctuation">;</span> |
Result (rows 11-20):
| product_id | name | price | category |
|---|---|---|---|
| 11 | Desk Chair | 249.99 | Furniture |
| 12 | Standing Desk | 499.99 | Furniture |
| 13 | Bookshelf | 159.99 | Furniture |
| 14 | Lamp | 45.99 | Furniture |
| 15 | Office Cabinet | 189.99 | Furniture |
| 16 | Running Shoes | 89.99 | Sports |
| 17 | Yoga Mat | 24.99 | Sports |
| 18 | Dumbbells Set | 79.99 | Sports |
| 19 | Water Bottle | 14.99 | Sports |
| 20 | Gym Bag | 39.99 | Sports |
2. Building a Pagination System
Here’s how you’d typically implement pagination in an application:
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<span class="token comment">-- Page 1: products 1-10</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> category <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> product_id <span class="token keyword">LIMIT</span> <span class="token number">10</span> <span class="token keyword">OFFSET</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token comment">-- Page 2: products 11-20</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> category <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> product_id <span class="token keyword">LIMIT</span> <span class="token number">10</span> <span class="token keyword">OFFSET</span> <span class="token number">10</span><span class="token punctuation">;</span> <span class="token comment">-- Page 3: products 21-30</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> category <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> product_id <span class="token keyword">LIMIT</span> <span class="token number">10</span> <span class="token keyword">OFFSET</span> <span class="token number">20</span><span class="token punctuation">;</span> |
The formula is simple: OFFSET = (page_number - 1) * page_size
3. Pagination with Custom Sorting
|
0 1 2 3 4 5 6 7 8 9 10 11 12 |
<span class="token comment">-- Page 2 of products sorted by price (cheapest first)</span> <span class="token comment">-- 15 items per page</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> category <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> price <span class="token operator">IS</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">ASC</span><span class="token punctuation">,</span> name <span class="token keyword">ASC</span> <span class="token keyword">LIMIT</span> <span class="token number">15</span> <span class="token keyword">OFFSET</span> <span class="token number">15</span><span class="token punctuation">;</span> |
4. Getting Total Count for Pagination
When implementing pagination, you usually need to know the total number of pages:
|
0 1 2 3 4 5 6 7 8 9 10 11 |
<span class="token comment">-- Get total count of products</span> <span class="token keyword">SELECT</span> <span class="token function">COUNT</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token punctuation">)</span> <span class="token keyword">AS</span> total_products <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> price <span class="token operator">IS</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span><span class="token punctuation">;</span> <span class="token comment">-- Then calculate pages: CEIL(total_products / page_size)</span> |
Part 5: LIMIT with Different Data Types
1. LIMIT with Dates – Most Recent Items
|
0 1 2 3 4 5 6 7 8 9 10 |
<span class="token comment">-- 5 most recently added products</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> category<span class="token punctuation">,</span> created_date <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> created_date <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Result:
| name | category | created_date |
|---|---|---|
| Wall Clock | Home | 2024-02-01 |
| Paper Clips (box) | Stationery | 2024-01-30 |
| Hat | Clothing | 2024-01-29 |
| Lip Balm | Beauty | 2024-01-27 |
| The Hobbit | Books | 2024-01-27 |
2. LIMIT with Aggregates – Top Categories
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
<span class="token comment">-- Top 3 categories by number of products</span> <span class="token keyword">SELECT</span> category<span class="token punctuation">,</span> <span class="token function">COUNT</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token punctuation">)</span> <span class="token keyword">AS</span> product_count <span class="token keyword">FROM</span> products <span class="token keyword">GROUP</span> <span class="token keyword">BY</span> category <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> product_count <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">3</span><span class="token punctuation">;</span> |
Result:
| category | product_count |
|---|---|
| Electronics | 5 |
| Furniture | 5 |
| Sports | 5 |
(Many categories have 5 products in our sample)
3. LIMIT with NULL Values
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<span class="token comment">-- Add some NULL values for demonstration</span> <span class="token keyword">INSERT</span> <span class="token keyword">INTO</span> products <span class="token punctuation">(</span>name<span class="token punctuation">,</span> category<span class="token punctuation">,</span> price<span class="token punctuation">,</span> stock_quantity<span class="token punctuation">)</span> <span class="token keyword">VALUES</span> <span class="token punctuation">(</span><span class="token string">'Unknown Product 1'</span><span class="token punctuation">,</span> <span class="token string">'Misc'</span><span class="token punctuation">,</span> <span class="token boolean">NULL</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Unknown Product 2'</span><span class="token punctuation">,</span> <span class="token string">'Misc'</span><span class="token punctuation">,</span> <span class="token boolean">NULL</span><span class="token punctuation">,</span> <span class="token number">15</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'Unknown Product 3'</span><span class="token punctuation">,</span> <span class="token string">'Misc'</span><span class="token punctuation">,</span> <span class="token number">25.99</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">-- Products with missing prices (NULLs first)</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> category <span class="token operator">=</span> <span class="token string">'Misc'</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price NULLS <span class="token keyword">FIRST</span> <span class="token keyword">LIMIT</span> <span class="token number">3</span><span class="token punctuation">;</span> |
Result:
| name | price |
|---|---|
| Unknown Product 1 | NULL |
| Unknown Product 2 | NULL |
| Unknown Product 3 | 25.99 |
Part 6: LIMIT with DISTINCT
When using DISTINCT, LIMIT applies after duplicates are removed:
|
0 1 2 3 4 5 6 7 8 9 10 |
<span class="token comment">-- Get first 5 unique categories</span> <span class="token keyword">SELECT</span> <span class="token keyword">DISTINCT</span> category <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> category <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Result:
| category |
|---|
| Appliances |
| Beauty |
| Books |
| Clothing |
| Electronics |
Important: ORDER BY with DISTINCT
When using DISTINCT, the ORDER BY columns must appear in the SELECT list:
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
<span class="token comment">-- This works - category is in SELECT</span> <span class="token keyword">SELECT</span> <span class="token keyword">DISTINCT</span> category <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> category <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> <span class="token comment">-- This might not work as expected in some databases</span> <span class="token comment">-- But PostgreSQL is more flexible</span> |
Part 7: LIMIT with JOINS
LIMIT works beautifully with joined tables. Let’s create an orders table for more examples:
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<span class="token keyword">CREATE</span> <span class="token keyword">TABLE</span> orders <span class="token punctuation">(</span> order_id <span class="token keyword">SERIAL</span> <span class="token keyword">PRIMARY</span> <span class="token keyword">KEY</span><span class="token punctuation">,</span> product_id <span class="token keyword">INTEGER</span> <span class="token keyword">REFERENCES</span> products<span class="token punctuation">(</span>product_id<span class="token punctuation">)</span><span class="token punctuation">,</span> customer_name <span class="token keyword">VARCHAR</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">,</span> quantity <span class="token keyword">INTEGER</span><span class="token punctuation">,</span> order_date <span class="token keyword">DATE</span><span class="token punctuation">,</span> total_amount <span class="token keyword">DECIMAL</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">-- Insert sample orders</span> <span class="token keyword">INSERT</span> <span class="token keyword">INTO</span> orders <span class="token punctuation">(</span>product_id<span class="token punctuation">,</span> customer_name<span class="token punctuation">,</span> quantity<span class="token punctuation">,</span> order_date<span class="token punctuation">,</span> total_amount<span class="token punctuation">)</span> <span class="token keyword">VALUES</span> <span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'Alice Johnson'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'2024-02-01'</span><span class="token punctuation">,</span> <span class="token number">179.98</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token string">'Bob Smith'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'2024-02-01'</span><span class="token punctuation">,</span> <span class="token number">129.99</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token string">'Carol White'</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token string">'2024-02-02'</span><span class="token punctuation">,</span> <span class="token number">119.97</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">7</span><span class="token punctuation">,</span> <span class="token string">'David Brown'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'2024-02-02'</span><span class="token punctuation">,</span> <span class="token number">129.99</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">9</span><span class="token punctuation">,</span> <span class="token string">'Eva Green'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'2024-02-03'</span><span class="token punctuation">,</span> <span class="token number">299.98</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">11</span><span class="token punctuation">,</span> <span class="token string">'Frank Black'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'2024-02-03'</span><span class="token punctuation">,</span> <span class="token number">249.99</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">13</span><span class="token punctuation">,</span> <span class="token string">'Grace Lee'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'2024-02-04'</span><span class="token punctuation">,</span> <span class="token number">319.98</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">15</span><span class="token punctuation">,</span> <span class="token string">'Henry Ford'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'2024-02-04'</span><span class="token punctuation">,</span> <span class="token number">189.99</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">17</span><span class="token punctuation">,</span> <span class="token string">'Iris West'</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token string">'2024-02-05'</span><span class="token punctuation">,</span> <span class="token number">74.97</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">19</span><span class="token punctuation">,</span> <span class="token string">'Jack Ryan'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'2024-02-05'</span><span class="token punctuation">,</span> <span class="token number">79.98</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">21</span><span class="token punctuation">,</span> <span class="token string">'Kate Moss'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'2024-02-06'</span><span class="token punctuation">,</span> <span class="token number">11.99</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token string">'Leo King'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'2024-02-06'</span><span class="token punctuation">,</span> <span class="token number">25.98</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">25</span><span class="token punctuation">,</span> <span class="token string">'Mona Lisa'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'2024-02-07'</span><span class="token punctuation">,</span> <span class="token number">14.99</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">27</span><span class="token punctuation">,</span> <span class="token string">'Nina Simone'</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token string">'2024-02-07'</span><span class="token punctuation">,</span> <span class="token number">269.97</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">29</span><span class="token punctuation">,</span> <span class="token string">'Oscar Wilde'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'2024-02-08'</span><span class="token punctuation">,</span> <span class="token number">49.98</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">31</span><span class="token punctuation">,</span> <span class="token string">'Paul McCartney'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'2024-02-08'</span><span class="token punctuation">,</span> <span class="token number">8.99</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">33</span><span class="token punctuation">,</span> <span class="token string">'Quentin Tarantino'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'2024-02-09'</span><span class="token punctuation">,</span> <span class="token number">49.98</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">35</span><span class="token punctuation">,</span> <span class="token string">'Ringo Starr'</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token string">'2024-02-09'</span><span class="token punctuation">,</span> <span class="token number">19.96</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">37</span><span class="token punctuation">,</span> <span class="token string">'Stephen King'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'2024-02-10'</span><span class="token punctuation">,</span> <span class="token number">29.99</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">39</span><span class="token punctuation">,</span> <span class="token string">'Taylor Swift'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'2024-02-10'</span><span class="token punctuation">,</span> <span class="token number">69.98</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">-- Get top 5 most recent orders with product details</span> <span class="token keyword">SELECT</span> o<span class="token punctuation">.</span>order_date<span class="token punctuation">,</span> o<span class="token punctuation">.</span>customer_name<span class="token punctuation">,</span> p<span class="token punctuation">.</span>name <span class="token keyword">AS</span> product_name<span class="token punctuation">,</span> o<span class="token punctuation">.</span>quantity<span class="token punctuation">,</span> o<span class="token punctuation">.</span>total_amount <span class="token keyword">FROM</span> orders o <span class="token keyword">JOIN</span> products p <span class="token keyword">ON</span> o<span class="token punctuation">.</span>product_id <span class="token operator">=</span> p<span class="token punctuation">.</span>product_id <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> o<span class="token punctuation">.</span>order_date <span class="token keyword">DESC</span><span class="token punctuation">,</span> o<span class="token punctuation">.</span>total_amount <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Result:
| order_date | customer_name | product_name | quantity | total_amount |
|---|---|---|---|---|
| 2024-02-10 | Stephen King | Dog Food (10lb) | 1 | 29.99 |
| 2024-02-10 | Taylor Swift | Cat Bed | 2 | 69.98 |
| 2024-02-09 | Quentin Tarantino | Face Cream | 2 | 49.98 |
| 2024-02-09 | Ringo Starr | Lip Balm | 4 | 19.96 |
| 2024-02-08 | Paul McCartney | Shampoo | 1 | 8.99 |
Part 8: Advanced LIMIT Techniques
1. LIMIT with Window Functions
Get top 3 products by rating in each category:
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<span class="token keyword">WITH</span> ranked_products <span class="token keyword">AS</span> <span class="token punctuation">(</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> category<span class="token punctuation">,</span> rating<span class="token punctuation">,</span> ROW_NUMBER<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">OVER</span> <span class="token punctuation">(</span><span class="token keyword">PARTITION</span> <span class="token keyword">BY</span> category <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> rating <span class="token keyword">DESC</span><span class="token punctuation">)</span> <span class="token keyword">AS</span> rank <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> rating <span class="token operator">IS</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span> <span class="token punctuation">)</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> category<span class="token punctuation">,</span> rating <span class="token keyword">FROM</span> ranked_products <span class="token keyword">WHERE</span> rank <span class="token operator"><=</span> <span class="token number">3</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> category<span class="token punctuation">,</span> rank<span class="token punctuation">;</span> |
Result (partial):
| name | category | rating |
|---|---|---|
| Air Fryer | Appliances | 4.8 |
| Blender | Appliances | 4.6 |
| Microwave | Appliances | 4.5 |
| Mechanical Keyboard | Electronics | 4.8 |
| Wireless Headphones | Electronics | 4.7 |
| 4K Monitor | Electronics | 4.6 |
| … | … | … |
This is more powerful than simple LIMIT because it gives you top N per group.
2. Random Sampling with LIMIT
Get 5 random products:
|
0 1 2 3 4 5 6 7 8 9 |
<span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> category<span class="token punctuation">,</span> price <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> RANDOM<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Each time you run this, you get a different set of 5 products.
3. LIMIT with Subqueries
Find products that are more expensive than the 5th most expensive product:
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> price <span class="token operator">></span> <span class="token punctuation">(</span> <span class="token keyword">SELECT</span> price <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> price <span class="token operator">IS</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">1</span> <span class="token keyword">OFFSET</span> <span class="token number">4</span> <span class="token punctuation">)</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span><span class="token punctuation">;</span> |
4. LIMIT with UNION
Get top 3 from two different categories:
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<span class="token punctuation">(</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> category <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> category <span class="token operator">=</span> <span class="token string">'Electronics'</span> <span class="token operator">AND</span> price <span class="token operator">IS</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">3</span> <span class="token punctuation">)</span> <span class="token keyword">UNION</span> <span class="token keyword">ALL</span> <span class="token punctuation">(</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> category <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> category <span class="token operator">=</span> <span class="token string">'Furniture'</span> <span class="token operator">AND</span> price <span class="token operator">IS</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">3</span> <span class="token punctuation">)</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> category<span class="token punctuation">,</span> price <span class="token keyword">DESC</span><span class="token punctuation">;</span> |
Part 9: Performance Considerations
1. LIMIT with Indexes
LIMIT can be extremely fast when combined with appropriate indexes:
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
<span class="token comment">-- Create indexes for common sorting patterns</span> <span class="token keyword">CREATE</span> <span class="token keyword">INDEX</span> idx_products_price <span class="token keyword">ON</span> products<span class="token punctuation">(</span>price <span class="token keyword">DESC</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">CREATE</span> <span class="token keyword">INDEX</span> idx_products_rating <span class="token keyword">ON</span> products<span class="token punctuation">(</span>rating <span class="token keyword">DESC</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">CREATE</span> <span class="token keyword">INDEX</span> idx_products_created_date <span class="token keyword">ON</span> products<span class="token punctuation">(</span>created_date <span class="token keyword">DESC</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">-- These queries will be very fast with indexes</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">10</span><span class="token punctuation">;</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> rating <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> rating <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">10</span><span class="token punctuation">;</span> |
2. How PostgreSQL Optimizes LIMIT
When you use ORDER BY ... LIMIT n, PostgreSQL tries to avoid sorting the entire table. If an index provides the ordered data, it can just scan the index until it finds n rows:
|
0 1 2 3 4 5 6 7 8 9 10 11 |
<span class="token keyword">EXPLAIN</span> <span class="token keyword">ANALYZE</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> price <span class="token operator">IS</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Look for “Limit” in the plan – it might show that PostgreSQL only needed to scan a small portion of an index.
3. Large OFFSET Performance
Large offsets can be slow because PostgreSQL still has to count through all the skipped rows:
|
0 1 2 3 4 5 6 7 8 9 10 |
<span class="token comment">-- This gets slower as OFFSET increases</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">10</span> <span class="token keyword">OFFSET</span> <span class="token number">10000</span><span class="token punctuation">;</span> |
For large offsets, consider:
-
Using keyset pagination (WHERE price < last_seen_price)
-
Materialized views
-
Caching
4. Keyset Pagination (Better for Large Offsets)
Instead of OFFSET, use a WHERE clause based on the last seen value:
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<span class="token comment">-- First page</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> product_id <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span><span class="token punctuation">,</span> product_id <span class="token keyword">LIMIT</span> <span class="token number">10</span><span class="token punctuation">;</span> <span class="token comment">-- Next page (assuming last product had price = 89.99, id = 16)</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price<span class="token punctuation">,</span> product_id <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> <span class="token punctuation">(</span>price <span class="token operator"><</span> <span class="token number">89.99</span><span class="token punctuation">)</span> <span class="token operator">OR</span> <span class="token punctuation">(</span>price <span class="token operator">=</span> <span class="token number">89.99</span> <span class="token operator">AND</span> product_id <span class="token operator">></span> <span class="token number">16</span><span class="token punctuation">)</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span><span class="token punctuation">,</span> product_id <span class="token keyword">LIMIT</span> <span class="token number">10</span><span class="token punctuation">;</span> |
This scales much better than OFFSET for large datasets.
Part 10: Real-World Examples
Example 1: E-commerce Product Listing Page
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<span class="token comment">-- Page 3 of electronics, sorted by price low to high</span> <span class="token comment">-- 12 items per page</span> <span class="token keyword">SELECT</span> p<span class="token punctuation">.</span>name<span class="token punctuation">,</span> p<span class="token punctuation">.</span>price<span class="token punctuation">,</span> p<span class="token punctuation">.</span>rating<span class="token punctuation">,</span> p<span class="token punctuation">.</span>stock_quantity <span class="token keyword">FROM</span> products p <span class="token keyword">WHERE</span> p<span class="token punctuation">.</span>category <span class="token operator">=</span> <span class="token string">'Electronics'</span> <span class="token operator">AND</span> p<span class="token punctuation">.</span>stock_quantity <span class="token operator">></span> <span class="token number">0</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> p<span class="token punctuation">.</span>price <span class="token keyword">ASC</span><span class="token punctuation">,</span> p<span class="token punctuation">.</span>rating <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">12</span> <span class="token keyword">OFFSET</span> <span class="token number">24</span><span class="token punctuation">;</span> |
Example 2: Admin Dashboard – Recent Orders with Issues
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<span class="token comment">-- Last 10 orders that are pending or have low stock</span> <span class="token keyword">SELECT</span> o<span class="token punctuation">.</span>order_date<span class="token punctuation">,</span> o<span class="token punctuation">.</span>customer_name<span class="token punctuation">,</span> p<span class="token punctuation">.</span>name <span class="token keyword">AS</span> product_name<span class="token punctuation">,</span> p<span class="token punctuation">.</span>stock_quantity<span class="token punctuation">,</span> o<span class="token punctuation">.</span>quantity <span class="token keyword">FROM</span> orders o <span class="token keyword">JOIN</span> products p <span class="token keyword">ON</span> o<span class="token punctuation">.</span>product_id <span class="token operator">=</span> p<span class="token punctuation">.</span>product_id <span class="token keyword">WHERE</span> p<span class="token punctuation">.</span>stock_quantity <span class="token operator"><</span> o<span class="token punctuation">.</span>quantity <span class="token operator">OR</span> p<span class="token punctuation">.</span>stock_quantity <span class="token operator"><</span> <span class="token number">5</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> o<span class="token punctuation">.</span>order_date <span class="token keyword">DESC</span><span class="token punctuation">,</span> p<span class="token punctuation">.</span>stock_quantity <span class="token keyword">ASC</span> <span class="token keyword">LIMIT</span> <span class="token number">10</span><span class="token punctuation">;</span> |
Example 3: Best Sellers Report
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<span class="token comment">-- Top 10 best-selling products this month</span> <span class="token keyword">SELECT</span> p<span class="token punctuation">.</span>name<span class="token punctuation">,</span> p<span class="token punctuation">.</span>category<span class="token punctuation">,</span> <span class="token function">SUM</span><span class="token punctuation">(</span>o<span class="token punctuation">.</span>quantity<span class="token punctuation">)</span> <span class="token keyword">AS</span> total_sold<span class="token punctuation">,</span> <span class="token function">SUM</span><span class="token punctuation">(</span>o<span class="token punctuation">.</span>total_amount<span class="token punctuation">)</span> <span class="token keyword">AS</span> revenue <span class="token keyword">FROM</span> orders o <span class="token keyword">JOIN</span> products p <span class="token keyword">ON</span> o<span class="token punctuation">.</span>product_id <span class="token operator">=</span> p<span class="token punctuation">.</span>product_id <span class="token keyword">WHERE</span> o<span class="token punctuation">.</span>order_date <span class="token operator">>=</span> DATE_TRUNC<span class="token punctuation">(</span><span class="token string">'month'</span><span class="token punctuation">,</span> <span class="token keyword">CURRENT_DATE</span><span class="token punctuation">)</span> <span class="token keyword">GROUP</span> <span class="token keyword">BY</span> p<span class="token punctuation">.</span>product_id<span class="token punctuation">,</span> p<span class="token punctuation">.</span>name<span class="token punctuation">,</span> p<span class="token punctuation">.</span>category <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> total_sold <span class="token keyword">DESC</span><span class="token punctuation">,</span> revenue <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">10</span><span class="token punctuation">;</span> |
Example 4: Inventory Alerts
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<span class="token comment">-- Top 5 products that need restocking soon</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> category<span class="token punctuation">,</span> stock_quantity<span class="token punctuation">,</span> <span class="token punctuation">(</span> <span class="token keyword">SELECT</span> <span class="token keyword">COALESCE</span><span class="token punctuation">(</span><span class="token function">SUM</span><span class="token punctuation">(</span>quantity<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token keyword">FROM</span> orders <span class="token keyword">WHERE</span> product_id <span class="token operator">=</span> p<span class="token punctuation">.</span>product_id <span class="token operator">AND</span> order_date <span class="token operator">></span> <span class="token keyword">CURRENT_DATE</span> <span class="token operator">-</span> <span class="token keyword">INTERVAL</span> <span class="token string">'30 days'</span> <span class="token punctuation">)</span> <span class="token keyword">AS</span> monthly_demand <span class="token keyword">FROM</span> products p <span class="token keyword">WHERE</span> stock_quantity <span class="token operator"><</span> <span class="token number">20</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> stock_quantity <span class="token keyword">ASC</span><span class="token punctuation">,</span> monthly_demand <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Example 5: Customer Purchase History
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<span class="token comment">-- Last 5 orders for a specific customer</span> <span class="token keyword">SELECT</span> o<span class="token punctuation">.</span>order_date<span class="token punctuation">,</span> p<span class="token punctuation">.</span>name <span class="token keyword">AS</span> product_name<span class="token punctuation">,</span> o<span class="token punctuation">.</span>quantity<span class="token punctuation">,</span> o<span class="token punctuation">.</span>total_amount <span class="token keyword">FROM</span> orders o <span class="token keyword">JOIN</span> products p <span class="token keyword">ON</span> o<span class="token punctuation">.</span>product_id <span class="token operator">=</span> p<span class="token punctuation">.</span>product_id <span class="token keyword">WHERE</span> o<span class="token punctuation">.</span>customer_name <span class="token operator">=</span> <span class="token string">'Alice Johnson'</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> o<span class="token punctuation">.</span>order_date <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Part 11: Common Mistakes and How to Avoid Them
Mistake 1: Using LIMIT Without ORDER BY
|
0 1 2 3 4 5 6 7 8 9 10 |
<span class="token comment">-- ❌ Unpredictable results</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price <span class="token keyword">FROM</span> products <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> <span class="token comment">-- ✅ Always specify ORDER BY when order matters</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> product_id <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Mistake 2: Assuming OFFSET is Zero-Based
|
0 1 2 3 4 5 6 7 8 9 10 |
<span class="token comment">-- OFFSET 0: first 10 rows</span> <span class="token keyword">LIMIT</span> <span class="token number">10</span> <span class="token keyword">OFFSET</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token comment">-- rows 1-10</span> <span class="token comment">-- OFFSET 10: skip first 10, get next 10</span> <span class="token keyword">LIMIT</span> <span class="token number">10</span> <span class="token keyword">OFFSET</span> <span class="token number">10</span><span class="token punctuation">;</span> <span class="token comment">-- rows 11-20</span> |
Mistake 3: Large OFFSET Values
|
0 1 2 3 4 5 6 7 8 9 10 |
<span class="token comment">-- ❌ Gets progressively slower</span> <span class="token keyword">LIMIT</span> <span class="token number">10</span> <span class="token keyword">OFFSET</span> <span class="token number">100000</span><span class="token punctuation">;</span> <span class="token comment">-- ✅ Consider keyset pagination for large offsets</span> <span class="token keyword">WHERE</span> last_processed_value <span class="token operator"><</span> some_value |
Mistake 4: Forgetting NULL Handling
|
0 1 2 3 4 5 6 7 8 9 10 11 12 |
<span class="token comment">-- ❌ NULLs will appear at the end in ASC order</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> <span class="token comment">-- ✅ Explicitly handle NULLs</span> <span class="token keyword">SELECT</span> name<span class="token punctuation">,</span> price <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> price <span class="token operator">IS</span> <span class="token operator">NOT</span> <span class="token boolean">NULL</span> <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">LIMIT</span> <span class="token number">5</span><span class="token punctuation">;</span> |
Mistake 5: Using LIMIT in Subqueries Incorrectly
|
0 1 2 3 4 5 6 7 8 9 10 11 12 |
<span class="token comment">-- ❌ This doesn't work as expected in all databases</span> <span class="token keyword">SELECT</span> <span class="token operator">*</span> <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> price <span class="token operator">></span> <span class="token punctuation">(</span><span class="token keyword">SELECT</span> price <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">-- ✅ This is fine - scalar subquery with LIMIT 1</span> <span class="token keyword">SELECT</span> <span class="token operator">*</span> <span class="token keyword">FROM</span> products <span class="token keyword">WHERE</span> price <span class="token operator">></span> <span class="token punctuation">(</span><span class="token keyword">SELECT</span> price <span class="token keyword">FROM</span> products <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> price <span class="token keyword">DESC</span> <span class="token keyword">LIMIT</span> <span class="token number">1</span> <span class="token keyword">OFFSET</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
Summary: The LIMIT Philosophy
The LIMIT clause is your tool for controlling data volume. Master these concepts:
-
Basic LIMIT – Get first N rows
-
LIMIT with ORDER BY – Get meaningful top/bottom results
-
Pagination with OFFSET – Navigate through data page by page
-
Performance awareness – Indexes and large offset considerations
-
Advanced techniques – Window functions for “top N per group”
Remember the query execution order:
-
FROM/JOIN – Get all possible rows
-
WHERE – Filter rows
-
GROUP BY – Group rows
-
HAVING – Filter groups
-
SELECT – Compute expressions
-
ORDER BY – Sort results
-
LIMIT/OFFSET – Trim results – HERE!
This means LIMIT works on the final, sorted result set. It’s the very last operation.
Key takeaways:
-
Always use ORDER BY with LIMIT unless you truly don’t care about order
-
OFFSET is great for pagination but watch performance with large offsets
-
Index the columns you sort by for fast LIMIT queries
-
Consider keyset pagination for better performance with large datasets
-
Use window functions when you need “top N per group”
The LIMIT clause transforms your database from a firehose of data into a controlled faucet, letting you take exactly what you need, when you need it. Whether you’re building user interfaces, generating reports, or analyzing data, LIMIT is essential for creating responsive, efficient applications.
Would you like me to elaborate on any specific aspect of LIMIT, such as more complex pagination strategies, performance optimization, or integration with other SQL features?
