SQL Limit子句

SQL Limit子句

在SQL中,用户可以使用Limit子句来限制搜索结果。在Oracle中,可以使用FETCH FIRST n ROWS ONLY或ROWNUM来执行与Limit相同的功能。在查询中,如果大量记录满足条件,则这在数据要按顺序排列的情况下非常有用。因此,只查看有限的记录可能更好。

使用Limit时需要记住的几个关键点

  • Limit子句限制了SQL返回的记录数。
  • 需要确保在所有SQL版本中无法实现该子句。并非所有SQL版本都支持Limit子句。
  • 用户可以使用SQL 2008的OFFSET/FETCH FIRST子句来实现Limit子句。
  • 在实现Limit子句时,用户应确保限制/偏移表达式是非负整数。

实现SELECT LIMIT的语法

在SELECT语句中实现LIMIT关键字的语法如下:

SELECT Exp
FROM tbls
WHERE condn
ORDER BY exp [ASC | DESC]
LIMIT number [ OFFSET offset_value];

参数或参数

  1. Exp: 它指定用户想从表中检索的列或数据值。
  2. Tbls: 它指定上述表达式中的列所属的表的名称。FROM子句中至少应该有一个表,并且该表必须具有SELECT语句的列。
  3. WHERE Condn: 在SQL语句中添加WHERE条件是可选的。目的是通过实现WHERE子句来检索满足所述条件的结果。
  4. ORDER BY exp: 它也是可以使用SQL查询实现的例外子句。它在SELECT LIMIT查询中实现,以使用户能够排列他们想要检索的记录。exp包含列的名称和用于排列记录的值。它可以是升序或降序。
  5. Limit: 该关键字用于指定结果集中应该存在的行数。它以数值作为参数,表示实现SELECT查询时显示的结果数量。
  6. 例如,如果实现了LIMIT 10,它将仅返回满足SELECT条件的前10条记录。这就是必须实现ORDER BY子句的地方,以便用户可以保持SELECT查询返回的结果顺序。
  7. OFFSET offset_value: 它是在LIMIT子句中可选使用的参数。它用于确定从哪条记录开始检索过程。它决定了开始检索的第一行。

如何实现LIMIT关键字

  • LIMIT关键字为返回集中显示的结果设置了上限。
  • 用户需要为LIMIT关键字指定一个数值。它可以是从0开始或任何其他正数。如果将LIMIT设置为0,则结果集中不会返回任何记录。
  • 用户使用偏移值来指定数据检索在表中开始的记录。
  • 选择UPDATE或DELETE命令适合使用LIMIT的语法。

需要实现LIMIT子句

考虑开发人员想要开发一个在大型数据上运行的应用程序的情况。数据库非常庞大,包含满足搜索和检索条件的大量记录,增加了加载时间。系统设计师可以通过固定应用程序返回的最大记录数来减少加载时间。假设在单次搜索中显示的最大记录数为20。为了强制执行上述确保满足客户需求的场景,用户可以实现LIMIT关键字,以便每个选项卡可以使用20条记录限制从查询返回的数据。

例如,让我们考虑一个情况,你有一个Student表,并且为了更好地理解,我们将使用Limit子句从结果集中检索出有限数量的结果。我们将实现Limit子句来执行这些操作。

表如下:

S_ID S_Name S_Dept S_Country S_Age
100 Aman Science India 19
105 Harsh Maths England 20
110 Harshit Science India 17
200 Kavya Social Studies Canada 18
120 Abhay Maths India 21
102 Ravi English India 22

实现SQL查询以定义和插入上表中的数据:

-- create a table
CREATE TABLE Student (
    S_ID INT,
    S_Name VARCHAR(50),
    S_Dept VARCHAR(50),
    S_Country VARCHAR(50),
    S_Age INT
);
-- insert some values
INSERT INTO Student (S_ID, S_Name, S_Dept, S_Country, S_Age)
VALUES (100, 'Aman', 'Science', 'India', 19),
       (105, 'Harsh', 'Maths', 'England', 20),
       (110, 'Harshit', 'Science', 'India', 17),
       (200, 'Kavya', 'Social Studies', 'Canada', 18),
       (120, 'Abhay', 'Maths', 'India', 21),
       (102, 'Ravi', 'English', 'India', 22);
-- fetch some values
SELECT * FROM Student;

输出:

SQL Limit子句

实现Limit子句

SELECT *
FROM Student
LIMIT  2;

输出:

SQL Limit子句

使用Order By子句实现Limit子句

SELECT *
FROM Student
ORDER BY S_Age DESC
LIMIT 3;

输出:

SQL Limit子句

Limit子句操作符可以在用户不想在SQL中使用WHERE子句的情况下,用于检索选定的结果。上述查询将返回最年长的3个学生,而无需实现条件语句。

使用LIMIT和OFFSET

LIMIT x OFFSET y意味着跳过前y个条目,然后返回接下来的x个条目。为了实现OFFSET,用户必须实现ORDER BY子句。用户只能通过使用ORDER来实现OFFSET。在使用OFFSET时,值应大于或等于零。如果它有一个负值,查询将返回错误。

SELECT *
FROM Student
ORDER BY S_Age LIMIT 4 OFFSET 2; 

SELECT * 
FROM Student 
ORDER BY S_Age LIMIT 4,2; 

上述查询将跳过前两个条目并返回下面的4个条目。在上面的查询中,Limit有两个参数。第一个值被视为X,是偏移值。它将跳过X个记录;第二个参数是Y,它指定将返回的下一个Y个记录。

输出:

SQL Limit子句

从表中检索第N个最高或最低值

limit函数确定存储在数据库中的最高或最低值。

现在我们将研究在查找最高或最低值时使用LIMIT。我们需要检索具有第n个最高或最低值的行。在这种情况下,我们可以使用后续的MySQL LIMIT子句来获得期望的结果。

语法:

SELECT column_list  
FROM table_name  
ORDER BY expression  
LIMIT n-1, 1;  

SELECT S_Age FROM Student  
ORDER BY S_Age  LIMIT 2, 1;  

输出:

SQL Limit子句

MySQL中使用Where的Limit

用户可以在SQL中使用Limit关键字实现Where子句。它使用户能够指定一个条件,这个条件必须由从表中生成的限制行作为结果集满足。

SELECT S_Age
FROM Student
WHERE S_ID<110
ORDER BY S_Age
LIMIT 2, 1;

输出:

SQL Limit子句

实现LIMIT Clause的优点

  • Limit Clause的主要功能是指定结果集中存在的最大行数。即使最大行数超过满足指定条件的行数,它也会返回确切的最大行数。它们是从表中返回的唯一行,即使它们在WHERE子句中满足条件也是如此。
  • 它还可以通过实现一个主机变量或局部变量中的SPL输入值来分配最大值。
  • 如果LIMIT子句后跟ORDER BY子句,则检索到的记录将根据ORDER BY子句进行排序。由于查询结果返回时没有明确的顺序,因此用户可以实现ORDER BY子句以按特定顺序获取结果,并通过限制行的顺序来获取限定行的固定子集。

对LIMIT子句的限制

有一些特定情况限制了LIMIT子句的使用。在以下情况下,用户不能实现LIMIT子句:

  • 在定义视图时。
  • 不能在嵌套的SELECT语句中实现LIMIT子句。
  • 除FROM子句中使用的表达式中的子查询外,不能与其他子查询一起使用。
  • 不能与在SPL程序中的singleton SELECT where (max=1)内实现的作为表达式的嵌入SELECT查询一起使用,其中嵌入SELECT语句被实现为表达式。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程