SQL - ¿Seleccionar solo las primeras 10 filas?

124

¿Cómo selecciono solo los primeros 10 resultados de una consulta?

Me gustaría mostrar solo los primeros 10 resultados de la siguiente consulta:

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
Miguel
fuente
3
Mencione la base de datos (y la versión).
Vikas Goel
2
Debería ser la nueva respuesta, stackoverflow.com/a/36476971/124486
Evan Carroll
Prueba también TOP 10
Prisoner ZERO

Respuestas:

173

En el servidor SQL, use:

select top 10 ...

p.ej

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

En MySQL, use:

select ... order by num desc limit 10
Derek Slager
fuente
44

Depende de su RDBMS

MS SQL Server

SELECT TOP 10 ...

MySQL

SELECT ... LIMIT 10

Sybase

SET ROWCOUNT 10
SELECT ...

Etc.

martin clayton
fuente
7
La sintaxis ... LIMIT 10 también es utilizada por sqlite3
dat
24

En MySQL:

SELECT * FROM `table` LIMIT 0, 10
Ben
fuente
1
¿Cuál es la diferencia entre el límite 0, 10 y el límite 10? ¿Y por qué el límite de 10, 20 no me da 10 filas entre las filas 10 y 20? EDITAR: Oh, entonces límite 10, 20 significa dame 20 filas después de la décima fila. Si quiero filas entre 10 y 20 tengo que hacer un límite de 10, 10. ¡Gracias!
AbdurRehman Khan
21

La respuesta ANSI SQL es 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

Si desea que se incluyan los lazos, hágalo en su FETCH FIRST 10 ROWS WITH TIESlugar.

Para omitir un número específico de filas, use OFFSET, p. Ej.

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

Omitirá las primeras 20 filas y luego buscará 10 filas.

Compatible con versiones más recientes de Oracle, PostgreSQL , MS SQL Server, Mimer SQL y DB2, etc.

jarlh
fuente
20

En SQL estándar puede utilizar:

... FETCH FIRST 10 ROWS ONLY

Esto es compatible con DB2, PostgreSQL y Oracle 12.1 (y posteriores)

brabster
fuente
para PostgreSQL también
ralf.w.
18

Oráculo

WHERE ROWNUM <= 10  and whatever_else ;

ROWNUMes una variable mágica que contiene el número de secuencia de cada fila 1 .. n .

Wallyk
fuente
1
Esto está mal. "rownum" buscará las primeras n filas de la tabla. ¡No filtrará desde la condición "lo que sea"!
Vikas Goel
stackoverflow.com/questions/874082/… Siga la respuesta de stili para la base de datos relacionada con Oracle
Vikas Goel
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  

Esto funcionó para mí Si puedo, tengo algunos dbscripts útiles que puedes ver

Dbscripts útiles

sayannayas
fuente
2

Lo que busca es una cláusula 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
AvatarKava
fuente
1

Firebird:

SELECT FIRST 10 * FROM MYTABLE
ne2dmar
fuente
1

PostgreSQL:

SELECT ... LIMIT [num] OFFSET [num];
Enrique
fuente
0
SELECT* from <table name> WHERE rownum <= 10;
kiran kumar
fuente
de acuerdo con aquí: w3schools.com/sql/sql_top.asp Esta es una respuesta listada para Oracle .. Voto a favor.
eaglei22
0
SELECT  Top(12) Month, Year, Code FROM TempEmp 
ORDER BY  Year DESC,month DESC
JIYAUL MUSTAPHA
fuente