萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql中LEFT JOIN查詢兩個表的差集

mysql中LEFT JOIN查詢兩個表的差集

   今天在做一個微信牆的抽獎程序的時候遇到了一個問題,我需要查詢量表的差集,業務情形是這樣的

  一個表用來保存抽獎用戶的(www.111cn.net 一個人可能會有多條數據),而另一張表保存的是中獎的用戶,我需要報麼有中獎的所用用戶查找出來,剛開始用的是where進行多表關聯查詢,但是最終發現當中獎表中麼有數據的時候是查找不到任何信息的,改用LEFT JOIN 用這個就很簡單了,

 代碼如下  

DESC SELECT * 
FROM  `enet_wall_list` AS l
LEFT JOIN  `enet_wall_lottery` AS lottery ON l.openid = lottery.openid
WHERE l.weid =63
AND lottery.id IS NULL 
GROUP BY l.openid

  左連接查詢,查找相等的,如果沒有的lottery表中會用NULL字段直接判斷下就可以過濾一下數據了,然後得到需要的數據即可 。

  例子

  環境:A/B 兩表為關聯表。關聯字段,pid。A表為主表,數據多於B表。現查詢A表中存在,B表中不存在的數據

 代碼如下  

SELECT * FROM `A` a LEFT JOIN  `B`  b  ON a.`pid`=b.`pid` where b.`pid` IS NULL and LENGTH(a.`pid`)<10

  講述下以上SQL所用到的知識:

  1、LEFT JOIN ON : left join 左邊的表為主表,主表中的每條數據都會顯示。右邊的表中如果沒有數據,則表示為null

  2、LENGTH 計算字符串的長度

copyright © 萬盛學電腦網 all rights reserved