SQL Limit子句– MySQL Limit子句
当我们处理大量数据时,有时需要限制应作为查询的一部分返回的行数。
为了帮助我们做到这一点,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。
学生
StudentId | StudentName | State | Country |
---|---|---|---|
1 | Henry | Wales | UK |
2 | Rohit | Delhi | San Franceco |
3 | Steve | London | UK |
下面是创建表并插入一些示例数据的查询。
请注意,我使用的是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;
输出:
StudentId | StudentName | State | Country |
---|---|---|---|
1 | Henry | Wales | UK |
2 | Rohit | Delhi | San 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;
输出:
StudentId | StudentName | State | Country |
---|---|---|---|
1 | Henry | Wales | UK |
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表的第三行。