分別求出d01、d02、d03......d31列的和;
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)隨縣,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):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是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件。
MySQL是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫(kù)。
由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache 可組成良好的開(kāi)發(fā)環(huán)境。
我在PostgreSQL上試了下,是可以的,MySQL我沒(méi)裝,就不清楚了,但我想應(yīng)該是可以的
有三個(gè)辦法(我的連接直接寫(xiě)的都是id,如果不用這個(gè)連接那么就自己換掉)
(1)union all(兩張表直接union all),這個(gè)不會(huì)和union一樣去掉重復(fù)的(萬(wàn)一有一個(gè)id一樣,的學(xué)生,成績(jī)也一樣,那不是直接少算一科,當(dāng)然如果你的id是科目id,大一大二不會(huì)重復(fù),那就當(dāng)我沒(méi)說(shuō)),而是直接全部排列出來(lái),然后兩張表變成一張表,直接sum就行了。
你說(shuō)的并集,舉例就是大二有人轉(zhuǎn)系,有人走,有人來(lái),那么有人有大一成績(jī)但是沒(méi)有大二成績(jī),有人有大二成績(jī)沒(méi)有大一成績(jī),可是這兩者都要顯示出來(lái),是這個(gè)意思吧。
只是union all以后,外面要套一層select * from,不然如果把這個(gè)放在子查詢(xún)那么就會(huì)報(bào)錯(cuò),畢竟這是兩張表,不是一張。
(2)計(jì)算兩遍一個(gè)左連接,一個(gè)右連接,得到的結(jié)果union(不是union all啊),這樣去掉重復(fù)的就OK了,別忘了沒(méi)有空集補(bǔ)0,我的isnull寫(xiě)的應(yīng)該不規(guī)范,而且需要測(cè)試測(cè)試,畢竟也有不需要寫(xiě)的可能。
舉例,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)辦法差不多,不過(guò)這個(gè)是先求出只有大一成績(jī)的,再求出只有大二成績(jī)的,然后再求出兩個(gè)成績(jī)都有的。
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的寫(xiě)法,mysql我忘了有沒(méi)有了,如果有更好,沒(méi)有的話(huà),那么就不那么好辦了。
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
如果兩個(gè)表的字段大部分一樣且具有關(guān)聯(lián)業(yè)務(wù)的話(huà),設(shè)計(jì)上建議合并成一個(gè)表。
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')
這樣會(huì)導(dǎo)致dtest中所有記錄的字段都被賦值,你應(yīng)該在后面加上適當(dāng)?shù)膚here條件。
MySQL數(shù)據(jù)庫(kù)語(yǔ)句,計(jì)算某一列的和用select sum(b) from a就可以了。
下面來(lái)補(bǔ)充一些MySql的基本操作命令。
注: 表示參數(shù)、[]表示可選項(xiàng)
連接數(shù)據(jù)庫(kù):mysql?mysql -uusername -ppassword;
顯示所有數(shù)據(jù)庫(kù):mysql show databases;
選擇數(shù)據(jù)庫(kù):mysql?use database name;
創(chuàng)建一個(gè)數(shù)據(jù)庫(kù):mysql create database database name [charset charset];
刪除一個(gè)數(shù)據(jù)庫(kù):mysql drop database database name;
修改數(shù)據(jù)庫(kù)名:mysql無(wú)法直接修改數(shù)據(jù)庫(kù)名!
顯示所有表:mysql show tables;
刪除一張表:mysql drop table table name;
修改表名:mysql?rename table table name to new table name;
清空表:mysql truncate table name;
truncate和delete的區(qū)別:truncate相當(dāng)于刪表再重建一張相同結(jié)構(gòu)的表,操作后得到一張全新表;delete只是刪除數(shù)據(jù),而且是按照行來(lái)刪除,如果表中有自增型字段,其影響還在。
查看表結(jié)構(gòu):mysql desc table name;
快速建一張相似的表:mysql create table table name like another table;