查找前 10 条记录是使用表和数据库的程序员的常见需求。无论是课程、汽车、板球、球员等。这个列表是永无止境的。但是如何从数据库中选出TOP记录呢?因为这是在后端发生的事情。所以,如果您也在寻找这个问题的答案,请查看这篇文章并了解更多信息。我们将通过实际示例了解如何从不同的数据库中选择 TOP 10 记录。
如何在表中查找前 10 条记录
那么,还等什么?让我们开始选择 TOP 记录,看看考虑所有不同数据库的结果。
1. SQL Server SELECT TOP 10 记录
SELECT TOP 条件允许您限制问题结果集中返回的行数或列的级别。
由于存储在表中的元组的顺序是未知的,所以 SELECT TOP 命令经常与 ORDER BY 子句结合使用。因此,结果集仅限于请求的主要 N 行数。
语法:
SELECT TOP (expression) [PERCENT]
[WITH TIES]
FROM
table_name
ORDER BY
column_name;
TOP 子句之后是一个表达式,它确定要返回的列数。如果使用 PERCENT,则表达式被评估为浮动值,否则,它完全转换为 BIGINT 值。
PERCENT 关键字显示查询返回元组的主要 N 百分比,其中 N 是表达式的结果。WITH TIES 允许您返回更多行,这些行的值与受限结果集中的最后一列匹配。请注意,WITH TIES 可能会返回比您在表达式中确定的行数更多的行。
例如,如果您需要退回最昂贵的商品,您可以使用 TOP 1。尽管如此,如果至少有两个商品的成本与最昂贵的商品相似,那么您将错过结果中的其他最昂贵的商品放。为了避免这种情况,您可以使用 TOP 1 WITH TIES。它将包含主要的昂贵项目以及后续的项目等。
示例:
让示例数据库架构如下:

1) 使用具有常数的 TOP
查询:
SELECT TOP 10
product_name, list_price
FROM
production.products
ORDER BY
list_price DESC;
输出:

2.使用TOP返回前N百分比的Tuples
附带的模型使用 PERCENT 来确定结果集中返回的项目数。生产。products 表有 321 行,因此,321 的百分之一是一个分数值 ( 3.21 ),SQL Server 将它收集到下面的整数,对于这种情况是四 ( 4 )。
查询:
SELECT TOP 1 PERCENT
product_name,
list_price
FROM
production.products
ORDER BY
list_price DESC;
输出:

3. 使用 TOP WITH TIES 包含与最后一个元组中的值匹配的元组
查询:
SELECT TOP 3 WITH TIES
product_name,
list_price
FROM
production.products
ORDER BY
list_price DESC;
输出:

2.Oracle数据库
在此模型中,第三个成本较高的项目的缩减成本为 6499.99。由于断言使用了 TOP WITH TIES,因此它返回了另外三个项目,其缩减成本与第三个项目相同。
甲骨文
句法:
(1) 对于 Oracle 12 版本:
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY;
number ⇒ n (number) 输出中需要的行
(2) 较旧的甲骨文版本:
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
ROWNUM ⇒ 行号,number ⇒ 输出中需要的 n(行数)
示例:
考虑以下数据库:

(a) 获取前 3 行
查询:
SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;
输出:

(b) 从“Customers”表中获取前 50% 条记录的 SQL 语句
查询:
SELECT * FROM Customers
FETCH FIRST 4 PERCENT ROWS ONLY;
输出:

3. MySQL 和 PostgreSQL
使用前 N 个问题意味着您需要将结果限制在特定行数。这些用于从结果集中获取最佳或最新的列。
语法:
SELECT column_name FROM table_name LIMIT N;
N → 输出中需要的元组数
例子:
考虑表“客户”如下:

⇒ 获取表中前3条记录,语法如下:
查询:
SELECT * FROM客户LIMIT 3 ;
输出:

⇒ 我们需要得到三个最年轻的客户,并对其进行细分以进行预测。可以看附带的代码测试。
查询:
SELECT * FROM customer ORDER BY customer_age ASC LIMIT 3;
输出:
首先,将请求有关 customer_age 的表信息。最年轻的客户将在顶部,而更成熟的客户将在底部。
然后从排列信息的结果集中选择主要的 3 行。

⇒考虑您需要选择从偏移量 3 开始的主要 4 行的可能性。
查询:
SELECT * FROM you_table_name ORDER BY column_name ASC LIMIT offset,row_count;
输出:

结论:
我们假设我们可以根据风险先决条件限制结果集中的行数。在 MySQL/PSQL (PostgreSQL) 中,我们可以选择前 N 行数或从 M 开始的前 N 行数,而且我们发现 LIMIT 规定可以在有/没有 ORDER BY 的情况下使用。原文标题:How to find top 10 records from a table in Oracle, MySQL, and SQL Server? Examples
原文链接:https://www.sqlrevisited.com/2022/08/how-to-find-top-10-records-from-table.html




