前言:
如今写这个项目的时间也快结束了,我们的后端的接口也基本上完成的差不多了,前后交互部分现在也可以了,对于本次的项目也有些许感悟。
关于MySQL:
本人认为在本次的项目过程中只要操作好MySQL数据库,管理好配置,基本上一个小的ssm网站就可以建立成功了,所以本次仍是谈一些关于MySQL的数据库操作,我们本次写的是小说网站,所以我建立了三个表关于小说的表,分别是小说名表,小说章节表,小说内容表,三个表的连接全靠中间的章节表,我想给他们返回一个小说的信息以及一个小说的字数和小说最近更新的章节名
一本书的总字数需要用到sum函数,所以我就写了如下的sql语句:
select a.*,t.content_id,sum(t.words),t.title as t_title from novelautor as a left join (select * from noveltitle ORDER BY id desc) as t on a.id=t.novel_id GROUP BY a.id
那个子查询语句是想的将一个组里的内容最新的那个章节给查询出来,但没想到查询出来的结果和不加子查询区别不大,我当时非常不理解,点了好几下的运行,最后才知道是我太菜了,
才知道SQL分组过后显示的都是组里插入的第一条数据,然后我单独查出来最新的那条数据,只操作那一个表里的东西,我用max函数查出来每组中最新的那一个章节数,由于有的小说会有分卷的操作,所以不能直接用max函数
select sum(t.words),t.title from (select * from noveltitle order by id desc)as t group by t.novel_id having 1=1 order by t.id desc
select title from noveltitle where content_id in(select max(content_id) from noveltitle group by novel_id)
查出来最新的了,再进行用sum函数,我发现sum结果数据不对
select title,sum(words),(select title from noveltitle where max(id) group by novel_id) from noveltitle GROUP BY novel_id
还是单章节的数据,到网上找了一上午的资源也没有找到有用的信息,突然想到我完全可以全查出来后再自己连接自己,嘿嘿,我真是个小机灵鬼。
select *,sum(t.words) from (select * from noveltitle where id in(select max(id) from noveltitle group by novel_id)) as j left noveltitle as t on t.novel_id=j.novel_id
总结:
学习时只看了数据库的一些基本的操作,当初留下的坑,终究是要自己啃下,现在也发现基础的作用是多么重要了,学习新的东西一定要有耐心学习,将基础打扎实,剩下的就是思维与算法了。