2009-12-12 35 views
54

¿Cómo selecciono solo los primeros 10 resultados de una consulta?SQL - Seleccione las primeras 10 filas solamente?

me gustaría mostrar sólo los primeros 10 resultados de la consulta siguiente:

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

favor mencionar la base de datos (y versión). –

+0

Debería ser la nueva respuesta, https://stackoverflow.com/a/36476971/124486 –

Respuesta

100

En servidor SQL, utilice:

select top 10 ... 

por ejemplo

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

En MySQL, utilice:

select ... order by num desc limit 10 
27

depende de su RDBMS

MS SQL Server

SELECT TOP 10 ... 

MySQL

SELECT ... LIMIT 10 

Sybase

SET ROWCOUNT 10 
SELECT ... 

Etc.

+6

La sintaxis de LIMIT 10 también es utilizada por sqlite3 – dat

2

Lo que estamos buscando 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 
12

DB2

... FETCH FIRST 10 ROWS ONLY

+0

para PostgreSQL también –

14

Oracle

WHERE ROWNUM <= 10 and whatever_else ; 

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

+0

Esto es incorrecto. "rownum" buscará las primeras 'n' filas de la tabla. ¡No filtrará de la condición "whatever_else"! –

+0

http://stackoverflow.com/questions/874082/show-only-the-first-n-lines-of-output-of-a-sql-query Siga la respuesta por stili para Oracle relacionado DB –

+0

Esta respuesta también funciona en JPQL. – Fabian

10

En 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 

Esto funcionó para me.if me permite, tienen pocos dbscripts útiles que puede tener vistazo a

Useful Dbscripts

1

Firebird:

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

de acuerdo a aquí: https://www.w3schools.com/sql/sql_top.asp Esta es una respuesta listada para Oracle. Votación ascendente. – eaglei22

7

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 lazos que se incluirán, hacer FETCH FIRST 10 ROWS WITH TIES lugar.

Para omitir un número especificado de filas, use OFFSET, p. Ej.

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

Se saltearán las primeras 20 filas y luego buscarán 10 filas.

con el apoyo de las nuevas versiones de Oracle, PostgreSQL, MS SQL Server y SQL Mimer etc.

+0

muchas gracias fue la solución que busqué – Cjdcoy

Cuestiones relacionadas