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

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

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

在这里插入图片描述

1.1描述

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

1.2示例:user_profile

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学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 运行效率中

在这里插入图片描述

1.5题解

SELECT device_id
FROM user_profile
LIMIT 0,2

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

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Redamancy_06

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值