SQL语句limit用法与SQL去重查询

SQL语句limit使用方法

select * from Customer LIMIT 10;--检索前10行数据,显示1-10条数据;
select * from Customer LIMIT 0,10;--检索从第1行开始,输出累计10条记录
select * from Customer limit 5,10;--检索从第6行开始,输出累计10条记录
  • Limit的作用是获取一表前几条或中间某几行数据,注意只在MySQL中起作用
  • Limit用法:limit 起始下标m,长度n ,m是记录开始的index,默认从0开始,表示第一条记录,n是指从第m+1条开始,取n条。

SQL语句limit的特点

//错误写法
select * 
from `tab`
limit (3-1)*5, 5;
  • order by ... [asc|desc]用于对查询结果排序,asc:升序,desc:降序,asc|desc可以省略,默认为asc
  • limit用来限制查询结果返回的行数,有2个参数(offset,count)
  • limit中offset可以省略,默认值为0
  • limit中offset 和 count都必须大于等于0
  • limit中offset和count的值不能用表达式
  • 分页排序时,排序不要有二义性,二义性情况下可能会导致分页结果乱序,可以在后面追加一个主键排序

SQL去重查询

方法一:使用distinct关键字

如果要在 students(学生) 表中去除 major(专业) 列中的重复值

---其中``反引号包裹只是为了区分mysql保留字---
select distinct `major` from student   ---得到的是学生表中的所有专业类型;单字段去重---
select distinct `major`,classid from student  ---得到的是学生表中班级和专业组合的不同类型,存在同一专业对应多个不同班级的情况;多字段去重---

注意:

  • distinct语法规定对单字段、多字段去重,必须放在第一个查询字段前
  • 如果对表中多列字段进行去重,去重的过程就是将多字段作为整体去重,即必须多字段完全相同才算重复
    弊端:
  • 使用major字段进行去重,最终的结果,也只返回major一个字段
  • 如果想以major字段去重,并且同时返回其他字段,DISTINCT是做不到的

方法二:使用group by 语法

如果要在 students(学生) 表中去除 major(专业) 列中的重复值

select `major` from student GROUP BY `major`  ---得到的是学生表中的所有专业类型---

去重原理:将重复的行进行分组,相同的数据只显示第一行
弊端:支持同时返回其他字段,但是大概率会出现数据混乱的问题,也就是字段信息不完全匹配
在使用GROUP BY语句进行按多字段去重时,需要注意以下几点:

  • SELECT语句中除了聚合函数之外,所有的字段都需要在GROUP BY语句中出现,否则数据会不准确或混乱。
  • 如果SELECT语句中出现了聚合函数,则必须使用HAVING子句对聚合结果进行限制。

总结:无论使用哪种方法,都可以去除指定列中的重复值。需要注意的是,在使用 DISTINCT 关键字或者 GROUP BY 语句时,查询结果的顺序可能与原表的顺序不同,因为 SQL 并不保证结果的顺序与查询顺序相同

posted @   饼MIN  阅读(518)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示