2009-12-12 441 views
54

Come selezionare solo i primi 10 risultati di una query?SQL: selezionare solo le prime 10 righe?

vorrei visualizzare solo i primi 10 risultati della query seguente:

SELECT a.names, 
     COUNT(b.post_title) AS num 
    FROM wp_celebnames a 
    JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0 
    WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) 
GROUP BY a.names 
ORDER BY num DESC 
+2

Si prega di indicare il database (e la versione). –

+0

Dovrebbe essere la nuova risposta, https://stackoverflow.com/a/36476971/124486 –

risposta

100

in SQL Server, l'uso:

select top 10 ... 

esempio

select top 100 * from myTable 
select top 100 colA, colB from myTable 

In MySQL, utilizzare:

select ... order by num desc limit 10 
27

dipende dal vostro RDBMS

MS SQL Server

SELECT TOP 10 ... 

MySQL

SELECT ... LIMIT 10 

Sybase

SET ROWCOUNT 10 
SELECT ... 

Ecc

+6

La sintassi LIMIT 10 viene anche utilizzata da sqlite3 – dat

2

Quello che stai cercando è una clausola LIMIT.

SELECT a.names, 
     COUNT(b.post_title) AS num 
    FROM wp_celebnames a 
    JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0 
    WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) 
GROUP BY a.names 
ORDER BY num DESC 
    LIMIT 10 
12

DB2

... FETCH FIRST 10 ROWS ONLY

+0

per PostgreSQL –

14

Oracle

WHERE ROWNUM <= 10 and whatever_else ; 

ROWNUM è una variabile magico che contiene il numero di sequenza di ciascuna riga 1 .. n.

+0

Questo è sbagliato. "rownum" preleverà le prime 'n' righe dal tavolo. Non filtrerà dalla condizione "qualunque_senza"! –

+0

http://stackoverflow.com/questions/874082/show-only-the-first-n-lines-of-output-of-a-sql-query Si prega di seguire la risposta da ancora per Oracle relativi DB –

+0

Questa risposta funziona anche in JPQL. – Fabian

10

In MySQL:

SELECT * FROM `table` LIMIT 0, 10 
2
SELECT * 
    FROM (SELECT ROW_NUMBER() OVER (ORDER BY user_id) user_row_no, a.* FROM temp_emp a) 
WHERE user_row_no > 1 and user_row_no <11 

Questo ha funzionato per me.if posso, hanno poche dbscripts utili che si possono avere un'occhiata a

Useful Dbscripts

1

Firebird:

SELECT FIRST 10 * FROM MYTABLE 
0
SELECT* from <table name> WHERE rownum <= 10; 
+0

secondo quanto segue: https://www.w3schools.com/sql/sql_top.asp Questa è una risposta elencata per Oracle .. Voto in rialzo. – eaglei22

7

La risposta ANSI SQL è FETCH FIRST.

SELECT a.names, 
     COUNT(b.post_title) AS num 
    FROM wp_celebnames a 
    JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0 
    WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) 
GROUP BY a.names 
ORDER BY num DESC 
FETCH FIRST 10 ROWS ONLY 

Se vuoi legami da includere, fare FETCH FIRST 10 ROWS WITH TIES invece.

Per saltare un numero specificato di righe, utilizzare OFFSET, ad es.

... 
ORDER BY num DESC 
OFFSET 20 
FETCH FIRST 10 ROWS ONLY 

Saltare le prime 20 righe e quindi recuperare 10 righe.

supportate da versioni più recenti di Oracle, PostgreSQL, MS SQL Server e SQL Mimer ecc

+0

grazie mille è stata la soluzione che ho cercato – Cjdcoy

Problemi correlati