【牛客刷题-SQL】SQL4 查询结果限制返回行数

1. SQL4 查询结果限制返回行数

‍♂️ 个人主页: Redamancy_06
系列专栏:《在线编程-SQL篇》
推荐一款找工作神器网站:《牛客网练习入口》|笔试题库|面试经验|实习招聘内推|
无论是面试,还是刷题学习,都非常好用。而且调试在线编程题时,是可以对比测试数据对应的正确输出的。
希望大家多多支持一起进步呀!
如果文章对你有帮助的话,欢迎评论 点赞 收藏 加关注

在这里插入图片描述

文章目录

  • 1. SQL4 查询结果限制返回行数
    • 1.1描述
    • 1.2示例:user_profile
    • 1.3示例1
    • 1.4LIMIT
      • 1.4.1指定初始位置
        • 1.4.1.1例子:在 emp 表中,使用 LIMIT 子句返回从第 3 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下
      • 1.4.2不指定初始位置
        • 1.4.2.1例子显示 emp 表查询结果的前 3 行,SQL 语句和运行结果如下
      • 1.4.3LIMIT和OFFSET组合使用
        • 1.4.3.1在 emp 表中,使用 LIMIT OFFSET 返回从第 4 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下。
      • 1.4.4总结
    • 1.5题解

1.1描述

题目:现在运营只需要查看前2个用户明细设备ID数据,请你从用户信息表 user_profile 中取出相应结果。

1.2示例:user_profile

id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male 复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 ZheJiang
5 5432 male 25 山东大学 Shandong

根据示例,你的查询应返回以下结果:

device_id
2138
3214

1.3示例1

输入:

drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`province` varchar(32)  NOT NULL);
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学','Shanghai');
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学','ZheJiang');
INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学','Shandong');

输出:

2138
3214

1.4LIMIT

当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力。这时就可以用 LIMIT 关键字来限制查询结果返回的条数。

LIMIT 是 MySQL 中的一个特殊关键字,用于指定查询结果从哪条记录开始显示,一共显示多少条记录。

LIMIT 关键字有 3 种使用方式,即指定初始位置、不指定初始位置以及与 OFFSET 组合使用。

1.4.1指定初始位置

LIMIT 关键字可以指定查询结果从哪条记录开始显示,显示多少条记录
LIMIT 指定初始位置的基本语法格式如下:

LIMIT 初始位置,记录数

其中,“初始位置”表示从哪条记录开始显示;“记录数”表示显示记录的条数。第一条记录的位置是 0,第二条记录的位置是 1。后面的记录依次类推。

注意:LIMIT 后的两个参数必须都是正整数。

1.4.1.1例子:在 emp 表中,使用 LIMIT 子句返回从第 3 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下

在这里插入图片描述

在这里插入图片描述
由结果可以看到,该语句返回的是从第 3 条记录开始的之后的 5 条记录。LIMIT 关键字后的第一个数字“2”表示从第 3 行开始(记录的位置从 0 开始,第 3 行的位置为 2),第二个数字 5 表示返回的行数。

1.4.2不指定初始位置

LIMIT 关键字不指定初始位置时,记录从第一条记录开始显示。显示记录的条数由 LIMIT 关键字指定。

LIMIT 不指定初始位置的基本语法格式如下:

LIMIT 记录数

其中,“记录数”表示显示记录的条数。如果“记录数”的值小于查询结果的总数,则会从第一条记录开始,显示指定条数的记录。如果“记录数”的值大于查询结果的总数,则会直接显示查询出来的所有记录。

1.4.2.1例子显示 emp 表查询结果的前 3 行,SQL 语句和运行结果如下

在这里插入图片描述
在这里插入图片描述结果中只显示了 3 条记录,说明“LIMIT 3”限制了显示条数为 3。

1.4.3LIMIT和OFFSET组合使用

LIMIT 可以和 OFFSET 组合使用,语法格式如下:

LIMIT 记录数 OFFSET 初始位置

参数和 LIMIT 语法中参数含义相同,“初始位置”指定从哪条记录开始显示;“记录数”表示显示记录的条数。

1.4.3.1在 emp 表中,使用 LIMIT OFFSET 返回从第 4 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下。

在这里插入图片描述

在这里插入图片描述

由结果可以看到,该语句返回的是从第 4 条记录开始的之后的 5 条记录。即“LIMIT 5 OFFSET 3”意思是获取从第 4 条记录开始的后面的 5 条记录,和“LIMIT 3,5”返回的结果相同。

1.4.4总结

带一个参数的 LIMIT 指定从查询结果的首行开始,唯一的参数表示返回的行数,即“LIMIT n”、"LIMIT n OFFSET 0"与“LIMIT 0,n”返回结果相同。带两个参数的 LIMIT 可返回从任何位置开始指定行数的数据。

但是:LIMIT 0,n运行效率更高
LIMIT n运行效率低
LIMIT n OFFSET 0运行效率中

SELECT *
FROM emp 
LIMIT 0,2 运行效率更高
SELECT *
FROM emp 
LIMIT 2   运行效率低
SELECT *
FROM emp 
LIMIT 2 OFFSET 0 运行效率中

【牛客刷题-SQL】SQL4 查询结果限制返回行数_第1张图片

1.5题解

SELECT device_id
FROM user_profile
LIMIT 0,2

SQL是一种简单的语言,但实践才是最好的学习方式;因为简单,所以上手快;因此是语言,索引需要实践。“纸上谈来终觉浅”,学习一门编程语言,最重要的还是要亲手编程,这个题单正是使用这种手把手指导的方式,教会你亲手编写SQL代码,让你实现从萌新到大佬的跨越。
点击链接赶紧练习起来吧:https://www.nowcoder.com/link/pc_csdncpt_red_sql

你可能感兴趣的:(#,牛客刷题---SQL,sql,数据库,面试)