十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
分别求出d01、d02、d03......d31列的和;
创新互联主要从事成都做网站、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务随县,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
SELECT count(d01),count(d02),count(d03).....count(d31) FROM m201201;
分别求出3006、3008、3010、3016、3034每一行中d01——d31之间记录的和
SELECT (d01+d02+d03+....+d31) as d_all FROM m201201 WHERE name IN('3006','3008','3010','3016','3034');
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
我在PostgreSQL上试了下,是可以的,MySQL我没装,就不清楚了,但我想应该是可以的
有三个办法(我的连接直接写的都是id,如果不用这个连接那么就自己换掉)
(1)union all(两张表直接union all),这个不会和union一样去掉重复的(万一有一个id一样,的学生,成绩也一样,那不是直接少算一科,当然如果你的id是科目id,大一大二不会重复,那就当我没说),而是直接全部排列出来,然后两张表变成一张表,直接sum就行了。
你说的并集,举例就是大二有人转系,有人走,有人来,那么有人有大一成绩但是没有大二成绩,有人有大二成绩没有大一成绩,可是这两者都要显示出来,是这个意思吧。
只是union all以后,外面要套一层select * from,不然如果把这个放在子查询那么就会报错,毕竟这是两张表,不是一张。
(2)计算两遍一个左连接,一个右连接,得到的结果union(不是union all啊),这样去掉重复的就OK了,别忘了没有空集补0,我的isnull写的应该不规范,而且需要测试测试,毕竟也有不需要写的可能。
举例,select a.id,a.student_id,a.score+isnull(b.score,0) aa from a left join b on a.id=b.id
union
select b.id,b.student_id,isnull(a.score,0)+b.score aa from a right join b on a.id=b.id
(3)办法差不多,不过这个是先求出只有大一成绩的,再求出只有大二成绩的,然后再求出两个成绩都有的。
select a.id,a.student_id,a.score from a where a.id not in (select id from b)
union
select b.id,b.student_id,b.score from b where b.id not in (select id from a)
union
select a.id,a.student_id a.score+b.score score from a,b where a.id=b.id
至于full join的写法,mysql我忘了有没有了,如果有更好,没有的话,那么就不那么好办了。
select name,sum(shuliang) from (
select a.name name,a.shuliang shuliang from a
union all
select b.name name,b.shuliang shuliang from b
) group by name
如果两个表的字段大部分一样且具有关联业务的话,设计上建议合并成一个表。
SELECT sum( b.b2) FROM atest a left join btest b on a.a3=b.b3 WHERE b4='5'
update dtest set d1=(SELECT sum( b.b2) FROM atest a left join btest b on a.a3=b.b3 WHERE b4='5')
这样会导致dtest中所有记录的字段都被赋值,你应该在后面加上适当的where条件。
MySQL数据库语句,计算某一列的和用select sum(b) from a就可以了。
下面来补充一些MySql的基本操作命令。
注: 表示参数、[]表示可选项
连接数据库:mysql mysql -uusername -ppassword;
显示所有数据库:mysql show databases;
选择数据库:mysql use database name;
创建一个数据库:mysql create database database name [charset charset];
删除一个数据库:mysql drop database database name;
修改数据库名:mysql无法直接修改数据库名!
显示所有表:mysql show tables;
删除一张表:mysql drop table table name;
修改表名:mysql rename table table name to new table name;
清空表:mysql truncate table name;
truncate和delete的区别:truncate相当于删表再重建一张相同结构的表,操作后得到一张全新表;delete只是删除数据,而且是按照行来删除,如果表中有自增型字段,其影响还在。
查看表结构:mysql desc table name;
快速建一张相似的表:mysql create table table name like another table;