Ответ 1
В SQL-сервере используйте:
select top 10 ...
например.
select top 100 * from myTable
select top 100 colA, colB from myTable
В MySQL используйте:
select ... order by num desc limit 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
В SQL-сервере используйте:
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.
В MySQL:
SELECT * FROM `table` LIMIT 0, 10
Oracle
WHERE ROWNUM <= 10 and whatever_else ;
ROWNUM
- волшебная переменная, которая содержит каждое порядковое число строк 1..n.
Ответ 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
Если вы хотите, чтобы связи были включены, вместо этого сделайте FETCH FIRST 10 ROWS WITH TIES
.
Чтобы пропустить указанное количество строк, используйте OFFSET
, например,
...
ORDER BY num DESC
OFFSET 20
FETCH FIRST 10 ROWS ONLY
Пропустит первые 20 строк, а затем извлечет 10 строк.
Поддерживается более новыми версиями Oracle, PostgreSQL, MS SQL Server, Mimer SQL, DB2 и т.д.
DB2
... FETCH FIRST 10 ROWS ONLY
То, что вы ищете, является предложением 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
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, которые вы можете посмотреть
Firebird:
SELECT FIRST 10 * FROM MYTABLE
SELECT* from <table name> WHERE rownum <= 10;
SELECT Top(12) Month, Year, Code FROM TempEmp
ORDER BY Year DESC,month DESC
PostgreSQL:
SELECT ... LIMIT [num] OFFSET [num];