sql >> Databasteknik >  >> RDS >> Mysql

ROW_NUMBER i SQL – Välj toppexempel i SQL och SQL Server

SQL, eller strukturerat frågespråk, låter oss samla in data från en databas genom frågor. Det gör det också möjligt för oss att infoga, uppdatera och ta bort dessa data.

I det här blogginlägget kommer vi att fokusera på hur man hämtar data och begränsar resultaten med hjälp av SQL.

Varför ska du begränsa SQL-frågeresultat?

En databas är vanligtvis en enorm samling data. Ibland behöver vi inte hämta alla resultat. För att begränsa resultaten kan vi optimera frågan.

Att begränsa frågeresultat är viktigt för DB-prestanda. Att hämta ett stort resultat när det inte krävs medför extra belastning på databasen och påverkar användarupplevelsen.

Hur man begränsar frågeresultat i SQL

Syntaxen är annorlunda för SQL Server, Oracle och MySQL för att begränsa data.

  • MySQL använder LIMIT .
  • ORACLE använder FETCH FIRST .
  • MS Access och SQL Server använder TOP .

Vi kommer att se exempel på hur var och en fungerar i detalj nedan.

Demodatabas

Vi har följande tabell som heter students med deras uppgifter som du kan se nedan:

ID Namn Kön
1 Ryan M
2 Joanna F
3 Miranda Andersen F
4 Dalia Mata F
5 Lilianna Boyd F
6 Lexie Sharp M
7 Jazlene Cordova F
8 Brycen Werner M
9 Karissa Turner F
10 Aisha Dodson F
11 Aydin Reeves M

Hur man begränsar en fråga i MySQL

Nedan finns syntaxen för MySQL.

SELECT  (expression)
FROM 
    table_name
LIMIT 5;

Som ett exempel väljer vi de första 5 posterna från tabellen.

Låt oss använda vår tabell students för denna demonstration.

-- fetch top 5 values from table

SELECT * FROM students
LIMIT 5;

Utdata:

Hur man kombinerar LIMIT med ORDER BY

När du kombinerar LIMIT med ORDER BY kan du få mer meningsfulla resultat. Vi kan till exempel använda detta för att hitta de 5 bästa eleverna som fick mer än 70 % på sitt prov.

Låt oss beställa vårt bord students med kolumnen name och välj de 5 bästa från resultatet. Du kan göra det så här:

SELECT * FROM students
order by name
LIMIT 5;

Utdata:

Hur man begränsar resultat – Oracle-syntax

Nedan är motsvarande syntax för vårt första exempel i Oracle.

SELECT * FROM students
FETCH FIRST 5 ROWS ONLY;

I äldre versioner av Oracle kan du använda ROWNUM för att begränsa antalet rader som returneras av en fråga.

Exempel:

SELECT * FROM 
students 
WHERE ROWNUM < 5;

Hur man begränsar resultat i SQL – MS Access-syntax

Nedan är motsvarande syntax för vårt första exempel i MS Access.

SELECT TOP 5 * FROM students;

Avsluta

LIMIT-funktionen kan vara mycket kraftfull för frågeoptimering när den kombineras med sortering. Effektiva frågor är lättare på systemet och snabba för användaren. Det rekommenderas alltid att BEGRÄNSA resultaten där så är tillämpligt.



  1. Nested Loop Join in Oracle 11g

  2. Hantera transaktioner samtidigt med lås i SQL Server

  3. PSQLE Undantag:aktuell transaktion avbryts, kommandon ignoreras till slutet av transaktionsblocket

  4. Frågor att ställa innan du startar en databas