📜  MySQL如何处理查询中的顺序和限制?

📅  最后修改于: 2022-05-13 01:55:27.895000             🧑  作者: Mango

MySQL如何处理查询中的顺序和限制?

在 MySQL 中, LIMIT子句与 SELECT 语句一起使用来限制结果集中的行数。限制子句接受一或两个偏移和计数参数。这两个参数的值都可以是零或正整数。

限制条款:

句法:

Limit 子句接受一个或两个参数,只要指定了两个参数,第一个是偏移量,第二个表示计数,而只要指定一个参数,它表示从结果集的开头返回的行数.

  • Offset:用于指定要返回的第一行的偏移量。
  • Count:用于指定返回的最大行数。

 在 MySQL 中使用 LIMIT 和 ORDER BY 语句进行 SELECT:

句法:

  • 表达式:要检索的列或计算。
  • 表:您希望从中检索记录的表。 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 行。