mysql可能遇到的问题_四. MYSQL常遇到的问题

1. Mysql分页,排序查询时出现重复的数据

sql语句

##查询第一页数据

SELECT rs.id, rs.deadline, rs.course_lesson_id, cl.english_name, rs.course_catalog_id, cc.english_name, rs.`content_status`

FROM recording_schedule rs LEFT JOIN course_lesson cl ON cl.id = rs.course_lesson_id LEFT JOIN course_catalog cc ON cc.id = rs.course_catalog_id

where rs.delete_time IS NULL and rs.content_status in( 1,4)

and rs.teacher_id = 14 and rs.`status` != 2

order by FIELD(rs.content_status, 4,5,3,1,6) asc, rs.deadline asc

limit 0,7

##查询第二页数据

SELECT rs.id, rs.deadline, rs.course_lesson_id, cl.english_name, rs.course_catalog_id, cc.english_name, rs.`content_status`

FROM recording_schedule rs LEFT JOIN course_lesson cl ON cl.id = rs.course_lesson_id LEFT JOIN course_catalog cc ON cc.id = rs.course_catalog_id

where rs.delete_time IS NULL and rs.content_status in( 1,4)

and rs.teacher_id = 14 and rs.status != 2

order by FIELD(rs.content_status, 4,5,3,1,2,6) asc, rs.deadline asc

limit 7,7

查询结果

所有的数据

0a2c2c9ea620

image.png重复的数据

0a2c2c9ea620

image.png

0a2c2c9ea620

image.png

可以看到重复了id为145的数据,丢失了id为53的数据。原因主要是:id为145的数据和id为53的数据所对应的deadline和content_status字段内容是完全一样的,sql语句又只按照这两个字段排序,就造成了可能重复的问题。

解决方法

在排序的最后添加一个id(id为主键id)的排序,使order by的组合内容唯一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值