当前位置: 首页 > news >正文

广西建设厅官方网站文件通知外包网

广西建设厅官方网站文件通知,外包网,做网站什么程序好,营销公司介绍一、多表处理 当前有两个表,一个是学生表student,一个是分数表score student表字段名表示如下(共1000条数据): score表字段表示如下(共6000条数据): 1、求每个学生的总分 SELECT …

一、多表处理

当前有两个表,一个是学生表student,一个是分数表score

student表字段名表示如下(共1000条数据):

score表字段表示如下(共6000条数据):

1、求每个学生的总分

SELECT id,SUM(score)
FROM score
GROUP BY id

2、将上述的总分与student表合并

 a表 join b表 on 条件

使用join on 函数来合并两个表,join前后各一个表表示合并,默认为内连接,on后面写两个表的关联条件

实例代码如下:

SELECT * FROM
(SELECT id,SUM(score) FROM score GROUP BY id) t1
JOIN student t2
ON t1.id=t2.id

代码解析:

        将上述1中生成的总分分数的表用括号括起来并命名为t1,然后再使用join函数将它与student表合并,student表取别名为t2,条件是t1表中的id等于t2表中的id,然后再使用select * from将这一整个表生成出来,此处*号可以更改,使用t1.id输出t1表中的id字段内容,也可使用t1.*来输出t1表总的所有数据,同样也可更改t2来取你想要数据

3、解析join

例如有两个表如下,第一个是person表,第二个是height表

    

1)内连接inner:

此时单单使用join取合并这两个表,其得到的结果如图所示

           

可以发现,数id=3与id=4的人没有合并出来,此时默认为inner join,可以不写inner

2)左连接left join、右连接right join

左连接:即保留join左边的所有数据,join前面的表就是左表,后面的表就是右表

   

右连接:即保留join右边的所有数据

    

3)全连接union
去重合并 union

例如下列代码,使用union合并两个表,一个是学生表的前十条数据,另一个是学生表的第五条开始的后十条数据,其合并结果会有去重的作用,即除去合并时出现的完全相同的行

其结果为:

不去重合并 union all

如果想要不去重可以使用union all ,不去重的合并所有数据

其运行结果为:此时重复数据没有被去除

此时如果想合并前面的两个person表和height表,可以直接把左合并与右合并分别用括号括起来,分别当做一个表,然后再使用union将两个表的数据完全合并,即可得到下列全连接形式

 4、隐式内连接(古董写法)

SELECT *
FROM student t1,score t2
WHERE t1.id=t2.id

其结果同样和join内连接合并的一样

5、求每个班的平均分

直接给出全部代码:

SELECT clazz,AVG(tt1.sum_sco)
FROM(SELECT t2.*,t1.sum_scoFROM(SELECT id,SUM(score) sum_sco FROM score GROUP BY id) t1RIGHT JOIN student t2ON t1.id=t2.id) tt1
GROUP BY clazz

接下来跟着思路走:
1、分析表

        两张表,学生表和分数表,分数表里有学生id、科目id和分数,学生表里有学生id、学生姓名、年龄、性别以及班级

student:

score:

2、分析思路

        要求班级平均成绩首先要把班级总分求出来,要求班级总分首先要有每个学生的总成绩

如此思路即可:

1)求学生总分:

对每个学生进行分组,对每个科目的分数求和,得到以下结果

SELECT id,SUM(score) sum_sco --取别名
FROM score 
GROUP BY id

2)合并表

        求出总分后将总分合并到学生表,得到下列代码:

SELECT t2.* -- 打印结果只需要t2表的所有字段,t1表的学生总分,t1.sum_sco
FROM(SELECT  -- 学生总分id,SUM(score) sum_sco FROM score GROUP BY id) t1  -- 将学生总分表取别名为t1RIGHT JOIN student t2  --合并student 表,并取别名t2ON t1.id=t2.id  --t1表的学生id等于t2表的学生id

3)求平均分

        得到了带学生总分的学生表,即可将班级分组,对每个学生的总分求平均值

SELECT clazz  -- 以单个班级分组,分别求每个班的平均分,AVG(tt1.sum_sco) -- 对班级内学生总分求平均值
FROM(SELECT   -- 将合并后带有学生总分表当做一个表,取别名tt1t2.*,t1.sum_scoFROM(SELECT id,SUM(score) sum_sco FROM score GROUP BY id) t1RIGHT JOIN student t2ON t1.id=t2.id) tt1 
GROUP BY clazz


 

6、总结

 1) 单表主要操作

        where 条件/ group by分组 / having条件 / select输出 / order by排序 / limit限制条数 

 2)多表主要操作

        join / union 合并

3)执行顺序

        执行顺序首先括号内最高,其次是join,然后是where> group by> having > select > order by > limit 

http://www.hrbkazy.com/news/27203.html

相关文章:

  • 网站规划的一般步骤潍坊新闻头条最新消息
  • 给别人做彩票网站违法吗优秀网站设计欣赏
  • 消防器材网站建设背景公关公司排行榜
  • 网站备案期间怎么做安卓手机优化软件哪个好
  • 网站备案认领淘宝代运营靠谱吗
  • 怎么制作网站模版企业宣传
  • 谷歌的英文网站网站优化查询代码
  • 专注昆明网站建设怎样做引流推广
  • 适合手机的网站学电脑培训班多少一个月
  • 网站做百度推广需要什么材料合肥网站seo整站优化
  • 网站建设军成海口做网站的公司
  • 毕设如何做网站地推项目平台
  • 网站开发加维护需要多少钱新浪微博指数查询
  • 河北建设网官网首页白城seo
  • tomcat加jsp做网站seo优化的作用
  • 免费发布信息网站大全注册seo外包公司一般费用是多少
  • 给企业做网站前景企业内训
  • 县委政府信息网站建设常见的网络营销方法
  • 织梦做商城网站上街网络推广
  • 南京建设网站费用西安网站seo技术厂家
  • 营销型网站建设制作多少钱seo关键词排名优化如何
  • wordpress缩写是什么怎样优化标题关键词
  • 厦门小鱼网抖音关键词排名优化
  • 自己组装电脑做网站服务器seo实战教程
  • 网站建设项目报价今天发生了什么重大新闻
  • 大型网站建设兴田德润专业百度推广的方式
  • 做标志的好网站北京云无限优化
  • 做网站手机浏览全屏民宿平台搜索量上涨
  • 网站做前端怎么搭建属于自己的网站
  • 做水果的网站有哪些如何做免费网站推广