Comment sélectionner uniquement les 10 premiers résultats d'une requête?
Je souhaite afficher uniquement les 10 premiers résultats de la requête suivante:
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
Dans le serveur SQL, utilisez:
select top 10 ...
par exemple.
select top 100 * from myTable
select top 100 colA, colB from myTable
Dans MySQL, utilisez:
select ... order by num desc limit 10
Dépend de votre SGBDR
MS SQL Server
SELECT TOP 10 ...
MySQL
SELECT ... LIMIT 10
Sybase
SET ROWCOUNT 10
SELECT ...
Etc.
En MySQL:
SELECT * FROM `table` LIMIT 0, 10
DB2
... FETCH FIRST 10 ROWS ONLY
Oracle
WHERE ROWNUM <= 10 and whatever_else ;
ROWNUM
est une variable magique qui contient le numéro de séquence de chaque ligne 1 .. n .
La réponse SQL ANSI est 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 vous souhaitez que des liens soient inclus, utilisez plutôt FETCH FIRST 10 ROWS WITH TIES
.
Pour ignorer un nombre spécifié de lignes, utilisez OFFSET
, par exemple.
...
ORDER BY num DESC
OFFSET 20
FETCH FIRST 10 ROWS ONLY
Va sauter les 20 premières lignes, puis aller chercher 10 lignes.
Pris en charge par les nouvelles versions d'Oracle, PostgreSQL , MS SQL Server, Mimer SQL et DB2, etc.
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
Cela a fonctionné pour moi. Si je peux, j’ai quelques dbscripts utiles que vous pouvez regarder.
Ce que vous recherchez, c'est une clause 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
Oiseau de feu:
SELECT FIRST 10 * FROM MYTABLE
PostgreSQL:
SELECT ... LIMIT [num] OFFSET [num];
SELECT Top(12) Month, Year, Code FROM TempEmp
ORDER BY Year DESC,month DESC
SELECT* from <table name> WHERE rownum <= 10;