MySQL牛客刷题:查询结果限制返回行数

题目描述:

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

示例:

根据输入,你的查询应返回以下结果:

解题过程:

我写的是:

select device_id 
from user_profile
where id <= 2;

题解涨知识:

使用LIMIT限制结果集

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。 LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。 如果只给定一个参数,它表示返回最大的记录行数目。 如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。 为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1。 初始记录行的偏移量是 0(而不是 1)。

例5.检索记录行 6-10

1 SELECT * FROM table LIMIT 5,5

例6.检索记录行 11-last

1 SELECT * FROM table LIMIT 10,-1

例7.检索前 5 个记录行

1 SELECT * FROM table LIMIT 5

所以题解为:

1 SELECT device_id FROM user_profile ORDER BY id LIMIT 2

效率问题:

select device_id from user_profile limit 0,2---运行效率更高

select device_id from user_profile limit 2 ---运行效率低

也可结合 limit offset: 一起使用时,limit表示要取的数量,offset表示跳过的数量

select device_id from user_profile limit 2 offset 0 // 跳过0条,从第一条数据开始取,取两条数据 ---运行效率中

MySQL和SQL service的不同

1.top不适用于所有的数据库语言。 1)SQL SERVER里可以使用。使用方式如下:

1 select top number/percent column(s) from user-profile;

2)在MySQL就不适用。在MySQL中使用的是limit。 本题解答:

1 select device_id from user_profile limit 2;
经验分享 程序员 微信小程序 职场和发展