MySQL如何处理查询中的顺序和限制?
在 MySQL 中, LIMIT子句与 SELECT 语句一起使用来限制结果集中的行数。限制子句接受一或两个偏移和计数参数。这两个参数的值都可以是零或正整数。
限制条款:
句法:
SELECT column1, column2, …
FROM table_name
LIMIT offset, count;
Limit 子句接受一个或两个参数,只要指定了两个参数,第一个是偏移量,第二个表示计数,而只要指定一个参数,它表示从结果集的开头返回的行数.
- Offset:用于指定要返回的第一行的偏移量。
- Count:用于指定返回的最大行数。
在 MySQL 中使用 LIMIT 和 ORDER BY 语句进行 SELECT:
句法:
SELECT expressions
FROM tables
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
LIMIT row_count_number;
- 表达式:要检索的列或计算。
- 表:您希望从中检索记录的表。 FROM 子句中必须至少列出一个表。
- WHERE 条件:这些是选择记录必须满足的可选条件。
- ORDER BY 表达式:这些是用于按升序或降序返回结果的可选语句。
- LIMIT row_count_number:指定基于 row_count_number 返回的有限行数。
让我们通过一个例子来理解这个语法。假设我们有一个关系, Student 。
在 MySQL 中创建一个数据库:
询问:
-- create
CREATE TABLE Student (
Id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
score Number NOT NULL,
branch TEXT
);
向表中插入数据:
询问:
-- insert
INSERT INTO Student VALUES (55, 'Bhargavi', '81','civil');
INSERT INTO Student VALUES (56, 'Nikita', '75','IT');
INSERT INTO Student VALUES (57, 'Riddhi', '100','CSE');
INSERT INTO Student VALUES (58, 'Shreya', '94','civil');
输出:
询问:
SELECT * FROM Student ORDER BY Score DESC LIMIT 2;
输出:
LIMIT运算符可用于上述情况,我们需要找到分数最高的前 2 名学生,并且不想使用任何条件语句。 ORDER BY Score DESC 已按降序对记录进行排序,并使用 LIMIT 2 我们从排序结果中获得前 2 行。
我们还可以在上面的示例中使用 WHERE 子句包含一些情况。假设我们不希望结果集中出现 Civil 分支,并且希望前 2 个学生的分数较低。
我们可以编写如下查询:
询问:
SELECT * FROM Student WHERE Branch != 'Civil' ORDER BY Score LIMIT 2;
输出:
上面的查询会根据强加的条件选择所有学生(即会选择除Civil Branch学生之外的所有学生)然后结果将按Score升序排序(ORDER BY关键字默认为升序排序) .最后,上述查询将返回前 2 行。