SQL Limit子句– MySQL Limit子句

时间:2020-02-23 14:32:30  来源:igfitidea点击:

当我们处理大量数据时,有时需要限制应作为查询的一部分返回的行数。

为了帮助我们做到这一点,SQL为我们提供了一个称为SQL Limit的功能。
此子句必须是查询中的最后一个子句,否则会出现错误。

SQL Limit子句

MySQL,PostgreSQL和许多其他数据库支持使用SQL Limit子句。
执行SQL查询,最后返回由LIMIT子句指定的结果数。
如果结果集大小小于LIMIT子句指定的行,则将返回所有结果集。

让我们尝试了解SQL Limit子句的用法。

SQL Limit示例

语法:

SELECT column_name(s)
FROM table_name
LIMIT number

我们将考虑下表,以更好地理解SQL Limit。

学生

StudentIdStudentNameStateCountry
1HenryWalesUK
2RohitDelhiSan Franceco
3SteveLondonUK

下面是创建表并插入一些示例数据的查询。
请注意,我使用的是PostgreSQL,因此您可能必须进行一些更改才能在其他数据库中运行它。

CREATE TABLE `student` (
`StudentId` INT NOT NULL,
`StudentName` VARCHAR(45) NULL,
`State` VARCHAR(45) NULL,
`Country` VARCHAR(45) NULL,
PRIMARY KEY (`StudentId`),
UNIQUE INDEX `StudentId_UNIQUE` (`StudentId` ASC) VISIBLE);

Insert into Student(StudentId,StudentName,State,Country) VALUES (1, 'Henry','Wales','UK'), (2, 'Rohit','Delhi','San Franceco'), (3, 'Steve','London','UK');

现在,我们将尝试将显示结果限制为仅两行。

SELECT * FROM student limit 2;

输出:

StudentIdStudentNameStateCountry
1HenryWalesUK
2RohitDelhiSan Franceco

有时我们需要根据某些条件限制行数。
在下一节中,我们将尝试更好地理解这种情况。

带where子句的SQL Limit

SQL Limit也可以与WHERE子句一起使用。

带Where子句语法的SQL限制:

SELECT column_name(s)
FROM table_name WHERE condition
LIMIT number

在这种情况下,我们还将考虑相同的学生表。

让我们尝试从表格中获得一个国家/地区为英国的条目。

SELECT * FROM student where country= "UK" limit 1;

输出:

StudentIdStudentNameStateCountry
1HenryWalesUK

MySQL Limit

MySQL数据库还支持LIMIT子句。
以上示例来自PostgreSQL数据库。
我们来看一些来自MySQL数据库的示例。

这是创建带有一些数据的示例表的脚本。

CREATE TABLE `Customer` (
`CustomerId` int(11) unsigned NOT NULL AUTO_INCREMENT,
`CustomerName` varchar(20) DEFAULT NULL,
`CutomerAge` int(11) DEFAULT NULL,
`CustomerGender` varchar(2) DEFAULT NULL,
PRIMARY KEY (`CustomerId`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

INSERT INTO `Customer` (`CustomerId`, `CustomerName`, `CutomerAge`, `CustomerGender`)
VALUES
	(1, 'John', 31, 'M'),
	(2, 'Amit', 25, 'M'),
	(3, 'Annie', 35, 'F'),
	(4, 'Tom', 38, 'M');

让我们运行一个简单的查询,从"客户"表中仅选择3行。

select * from Customer limit 3;

我们也可以在LIMIT中使用Order By子句。
在这种情况下,将执行查询,最后仅返回由limit子句指定的行数。

select * from Customer order by CustomerName limit 2;

最后,让我们看一个在WHERE条件下使用LIMIT子句的示例。

select * from Customer where CustomerGender = 'M' limit 2;

MySQL Limit Offset

在大多数情况下,limit子句用于通过分页处理批量记录。
因此,与偏移量配合使用时很有用。
带偏移量的limit子句的语法为:

SELECT column_name(s)
FROM table_name
LIMIT offset_number, number

偏移量编号指定要在结果中返回指定行数之前跳过的行。
让我们用一个简单的例子来理解这一点。

Select * from Customer limit 1, 2;

我们的客户表有4行。
因此,将跳过第一行,并在结果中返回后两行。
让我们再看一个有关SQL限制偏移量查询的示例。

select * from Customer limit 2, 1;

其中仅返回Customer表的第三行。