sql >> Databáze >  >> RDS >> Mysql

Jak omezit řádky v sadě výsledků MySQL

Problém:

Chtěli byste omezit počet řádků v sadě výsledků v MySQL.

Příklad:

Naše databáze má tabulku s názvem student s údaji ve sloupcích id , first_name , last_name a age .

id křestní_jméno last_name věk
1 Steven Watson 25
2 Lisa Anderson 19
3 Alice Miller 19
4 Marie Hnědá 25
5 Lucy Watson 25
6 Michael Jackson 22

Vyberme celá jména a věk studentů, ale omezme vrácené řádky na tři.

Řešení:

SELECT first_name, last_name, age
FROM student
LIMIT 3;

Zde je výsledek dotazu:

id křestní_jméno last_name věk
1 Steven Watson 25
2 Lisa Anderson 19
3 Alice Miller 19

Diskuse:

Klauzule LIMIT omezuje počet řádků v sadě výsledků. Používá se v příkazu SELECT, obvykle na konci příkazu. (I ORDER BY by mělo být uvedeno před LIMIT.)

Jediným povinným argumentem je počet řádků k zobrazení. V našem příkladu LIMIT 3 vytvořil sadu výsledků obsahující tři řádky. Pokud pomocí argumentu OFFSET neurčíte jinak, tato funkce vždy vrátí první n řádky, které splňují požadavky dotazu.

Volitelný argument OFFSET LIMIT se umístí před argument udávající počet vrácených řádků. Označuje pozici prvního řádku vráceného LIMIT (tj. „0“ je první řádek, 1 je druhý řádek atd.). Posun a počet řádků jsou odděleny čárkou.

Dotaz vrátí stejné záznamy jako předchozí dotaz, protože posun je nula. (Nula je výchozí hodnota odsazení.)

SELECT first_name, last_name, age
FROM student
LIMIT 0, 3;

V těchto dotazech nejsou řádky výsledků seřazeny. Pokud byste chtěli vybrat tři řádky ze seřazené sady výsledků, použijte ORDER BY:

SELECT first_name, last_name, age
FROM student
ORDER BY age DESC, last_name, first_name
LIMIT 1,3;

Zde nejprve seřadíme řádky podle věku (sestupně), poté příjmení a poté jména. Hodnotu offsetu použijeme pro začátek na druhém vráceném řádku a omezíme výsledky na tři řádky:

first_name last_name věk
Lucy Watson 25
Steven Watson 25
Michael Jackson 22

Tento dotaz nejprve seřadí řádky podle sloupce věku v sestupném pořadí. Poté seřadí podle last_name a first_name ve vzestupném pořadí. Když se podíváte na tabulku, uvidíte, že nejstarším studentům (Steven, Lucy, Mary) je 25 let. Mary je však vynechána, protože je první řadou a offset je 1 (tj. začínáme s druhou řadou). Lucy je nyní první, protože její křestní jméno je před Stevenovým. (Steven a Lucy mají stejné příjmení, takže jejich pořadí je určeno křestním jménem.) Michaelovi je 22, což z něj dělá dalšího nejstaršího studenta a posledního ze tří vrácených řad.


  1. Práce se sloupci MySQL TIMESTAMP v SQL Server

  2. Událost čekání:změna velikosti asynchronního deskriptoru

  3. Zabezpečte své Mongo Clusters pomocí SSL

  4. Dotaz MySQL GROUP BY den / měsíc / rok