selecti.uid,sum(ifnull(deposit,0)+ifnull(ddeposit,0)+ifnull(money,0))asallmoney
內(nèi)黃網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
frompw_memberinfoileftjoinpw_membersmonm.uid=i.uidleftjoinpw_memberdatadoni.uid=d.uid
whereifnull(deposit,0)+ifnull(ddeposit,0)+ifnull(money,0)2000;
有三個辦法(我的連接直接寫的都是id,如果不用這個連接那么就自己換掉)
(1)union all(兩張表直接union all),這個不會和union一樣去掉重復(fù)的(萬一有一個id一樣,的學(xué)生,成績也一樣,那不是直接少算一科,當(dāng)然如果你的id是科目id,大一大二不會重復(fù),那就當(dāng)我沒說),而是直接全部排列出來,然后兩張表變成一張表,直接sum就行了。
你說的并集,舉例就是大二有人轉(zhuǎn)系,有人走,有人來,那么有人有大一成績但是沒有大二成績,有人有大二成績沒有大一成績,可是這兩者都要顯示出來,是這個意思吧。
只是union all以后,外面要套一層select * from,不然如果把這個放在子查詢那么就會報錯,畢竟這是兩張表,不是一張。
(2)計算兩遍一個左連接,一個右連接,得到的結(jié)果union(不是union all啊),這樣去掉重復(fù)的就OK了,別忘了沒有空集補0,我的isnull寫的應(yīng)該不規(guī)范,而且需要測試測試,畢竟也有不需要寫的可能。
舉例,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我忘了有沒有了,如果有更好,沒有的話,那么就不那么好辦了。
1、創(chuàng)建三張測試表,
create table pw_memberinfo(uid int, name varchar(20));
create table pw_members(companyid int, uid int);
create table pw_memberdata(uid int, deposit int, ddeposit int, money int);
2、三張表,分別插入測試數(shù)據(jù),
insert into pw_members values(1, 1);
insert into pw_members values(1, 2);
insert into pw_members values(1, 3);
insert into pw_memberinfo values(1, 'name_1');
insert into pw_memberinfo values(2, 'name_2');
insert into pw_memberinfo values(3, 'name_3');
insert into pw_memberdata values(1,30,50,150);
insert into pw_memberdata values(2,77,50,12);
insert into pw_memberdata values(3,44,50,82);
3、查看pw_memberdata表中的記錄,select * from?pw_memberdata t,
4、編寫sql語句,
select * from (SELECT i.uid, sum(deposit+ddeposit+money) as allmoney
FROM pw_memberinfo i
LEFT JOIN pw_members m ON m.uid=i.uid
LEFT JOIN pw_memberdata d ON i.uid=d.uid
group by i.uid
) t where allmoney200
文章名稱:mysql怎么計算合計 mysql怎么求和
網(wǎng)站鏈接:http://muchs.cn/article30/doeidpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、網(wǎng)站營銷、網(wǎng)站導(dǎo)航、響應(yīng)式網(wǎng)站、全網(wǎng)營銷推廣、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)