仅选择前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
908459 次浏览

取决于你的关系数据库管理系统

微软 SQL 服务器

SELECT TOP 10 ...

MySQL

SELECT ... LIMIT 10

赛贝斯

SET ROWCOUNT 10
SELECT ...

等等。

在 SQL 服务器中,使用:

select top 10 ...

例如:。

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

在 MySQL 中,使用:

select ... order by num desc limit 10

你要找的是 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

在标准 SQL 中,您可以使用:

... FETCH FIRST 10 ROWS ONLY

DB2、 PostgreSQL 和 Oracle 12.1(及更高版本)支持这一点

神使

WHERE ROWNUM <= 10  and whatever_else ;

ROWNUM是一个神奇的变量,它包含每一行的序列号1. . N

在 MySQL 中:

SELECT * FROM `table` LIMIT 0, 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

这对我很有用,如果可以的话,我有一些有用的 dbscript,你可以看看

有用的 Dbscript

火鸟:

SELECT FIRST 10 * FROM MYTABLE
SELECT* from <table name> WHERE rownum <= 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

如果你想包括领带,改为 FETCH FIRST 10 ROWS WITH TIES

若要跳过指定数目的行,请使用 OFFSET,例如。

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

将跳过前20行,然后获取10行。

支持新版本的 神使PostgreSQL微软 SQL 服务器Mimer SQLDB2等。

SELECT  Top(12) Month, Year, Code FROM TempEmp
ORDER BY  Year DESC,month DESC

PostgreSQL:

SELECT ... LIMIT [num] OFFSET [num];