SQL-выберите только первые 10 строк?


Как выбрать только первые 10 результатов запроса?

Я хотел бы отобразить только первые 10 результатов из следующего запроса:

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
10 72
sql

10 ответов:

в SQL server используйте:

select top 10 ...

например

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

в MySQL, используйте:

select ... order by num desc limit 10

зависит от вашей СУБД

MS SQL Server

SELECT TOP 10 ...

MySQL

SELECT ... LIMIT 10

Sybase

SET ROWCOUNT 10
SELECT ...

Etc.

Oracle

WHERE ROWNUM <= 10  and whatever_else ;

ROWNUM волшебная переменная, которая содержит порядковый номер каждой строки 1..n.

DB2

... FETCH FIRST 10 ROWS ONLY

В MySQL:

SELECT * FROM `table` LIMIT 0, 10

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

если вы хотите, чтобы связи были включены, сделайте .

, чтобы пропустить указанное количество строк, используйте OFFSET, например,

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

пропустим первые 20 строк, а затем получить 10 строк.

поддерживается более новыми версиями Oracle,PostgreSQL, MS SQL Server, Mimer SQL и DB2 и др.

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  

это сработало для меня.Если можно, у меня есть несколько полезных dbscripts, которые вы можете посмотреть на

Полезные Dbscripts

то, что вы ищете, является предельным предложением.

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

Жар-птица:

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