MySQL聯結查詢和子查詢

2022-03-13 12:23:08 字數 1252 閱讀 2841

2018-2-24 16:18:12 星期六

今天需要統計乙個運營活動的資料, 涉及三個表, 分組比較多

活動描述:

每個人可以領取多張卡片,  好友也可以贈送其卡片, 20或40張卡片可以兌換乙個獎品

要求統計出:

1. 每個使用者的個人資訊, 2. 領取的卡總數, 3. 自己領的卡的數目, 4. 好友送的卡的數目, 5. 兌換獎品的數目

遇到的問題有:

1. 要先用group by 得到每個使用者總共的卡數量,  再用group by 得到每個使用者被贈送的卡數量, 然後對兩者做減法得到自己領取卡的數量 // 減法, 第1行

2. 每個使用者可以兌換多個獎品, 因此要把uid相同的多行獎品記錄連線成一行, 這個用到了 group by + group_concat()  //第4行

sql:

下邊的sql整體來看是幾個left join ,  而join的表不是表名, 是乙個子查詢

1

select a.uid, c.nickname, c.mobile, a.uid_cards, (a.uid_cards - b.send_uids) as self_cards, b.send_uids, c.regdate, from_unixtime(c.regdate, '

%y-%m-%d

'), d.award_ids

2from (select uid, count(*) as uid_cards from tabale1 group

by uid) asa3

left

join (select uid, count(*) as send_uids from tabale1 where send_uid >

0group

by uid) as b on a.uid =

b.uid

4left

join (select uid, group_concat(award_id) as award_ids from table2 group

by uid) as d on a.uid =

d.uid

5left

join table3 as c on a.uid = c.uid;

table1:  每個人的領取卡片記錄表

table2: 每個人的兌換獎品記錄列表

table3: 使用者資訊表

MySQL子查詢,聯結表

子查詢 select cust id from orders where order num in select order num from orderitems where prod id tnt2 對每個客戶執行count 計算,應該將count 作為乙個子查詢 select cust nam...

mysql 聯結查詢

mysql聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 userid int usernamevarchar 20 passwordvarchar 20 1 jack jackpwd 2 owen owenpwd t2表結構 使用者名稱,密碼...

子查詢 聯結表 建立高階聯結 組合查詢

巢狀在其他查詢中的查詢 利用子查詢過濾select cust id from orders where order num in select order num from orderitems where prod id tnt2 作為計算字段使用子查詢select cust name,cust ...