Heim >Datenbank >MySQL-Tutorial >mysql中LEFT JOIN查询两个表的差集

mysql中LEFT JOIN查询两个表的差集

WBOY
WBOYOriginal
2016-06-07 16:18:552308Durchsuche

今天在做一个微信墙的抽奖程序的时候遇到了一个问题,我需要查询量表的差集,业务情形是这样的 一个表用来保存抽奖用户的( 一个人可能会有多条数据),而另一张表保存的是中奖的用户,我需要报么有中奖的所用用户查找出来,刚开始用的是where进行多表关联查询

   今天在做一个微信墙的抽奖程序的时候遇到了一个问题,我需要查询量表的差集,业务情形是这样的

  一个表用来保存抽奖用户的( 一个人可能会有多条数据),而另一张表保存的是中奖的用户,我需要报么有中奖的所用用户查找出来,刚开始用的是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`)

  讲述下以上SQL所用到的知识:

  1、LEFT JOIN ON : left join 左边的表为主表,主表中的每条数据都会显示。右边的表中如果没有数据,,则表示为null

  2、LENGTH 计算字符串的长度

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn