我是靠谱客的博主 大方蓝天,最近开发中收集的这篇文章主要介绍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的组合内容唯一。

最后

以上就是大方蓝天为你收集整理的mysql可能遇到的问题_四. MYSQL常遇到的问题的全部内容,希望文章能够帮你解决mysql可能遇到的问题_四. MYSQL常遇到的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(91)

评论列表共有 0 条评论

立即
投稿
返回
顶部