首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MYSQL IN EXISTS LEFT JOIN 结果不同问题?

and fa.film_id = 2; 上面的三个SQL 看上去要表达一个目的,实际上从结果上看,1 2 SQL 结果是一致,第三个用 LEFT JOIN 表达SQL 结果和前两个不一样。...2 LEFT JOIN 是是存在一对多关系 见下图这个就是,通过left JOIN 查询后数据,明显与上个 EXIST ,IN 结果中,多个 3个 2 原因是在于 实际上在film_actor...中就存在 4条 film_id =2 记录,所以LEFT JOIN 如实包括了4 个2 记录, 而 EXIST IN 则带有去重功能,所以在结果中只有一个 2 记录。...如果要LEFT JOIN 中查询结果与 EXIST IN 一致则可以在查询语句中加入group by 来去重。...group by fi.film_id) as t; 所以在撰写语句时候,要明白 IN EXIST 和 LEFT JOIN 之间区别,避免结果不是自己要

1.7K50

left join on and 与 left join on where区别

在使用left jion时,on和where条件区别如下: 1、 on条件是在生成临时表时使用条件,它不管on中条件是否为真,都会返回左边表中记录。...2、where条件是在临时表生成好后,再对临时表进行过滤条件。这时已经没有left join含义(必须返回左边表记录)了,条件不为真的就全部过滤掉。        ...join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’ 2、select * formtab1 left join tab2 on (tab1...left join,right join,full join特殊性,不管on上条件是否为真都会返回left或right表中记录,full则具有left和right特性并集。...而inner jion没这个特殊性,则条件放在on中和where中,返回结果集是相同

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

大数据 面试 SQL left join 测试结果

题目 上篇文章给大家处理一个小测试,未参与或者忘了题目内容可以点击链接看下。 这个题目的正确答案为B,下面是大家选择结果,准确率为36%,说明大家还是忽略了一些基础知识细节。...第一点:大家都能够确定是t2.id肯定是NULL,说明大家对于on条件中t1.id = 2 关联条件,可以限制t2表结果; 第二点:left joinon条件是关联条件,不限定左表数据,所以...t1表中所有数据都需要保留; 第三点:在真实需求下,期望得出C结果是错写出该SQL,产出C结果SQL如下: select t1.id, t2.id from t1 left join t2 on...id from t1 where t1.id=2 ) new_t1 left join ( select id from t2 )new_t2 on new_t1.id = new_t2...join new_t2 on new_t1.id = new_t2.id

13410

对mysql left join 出现重复结果去重

简单说明问题出现原因: MySQL left join 语句格式为: A LEFT JOIN B ON 条件表达式 left join 是以A表为基础,A表即左表,B表即右表。...但如果B表符合条件记录数大于1条,就会出现1:n情况,这样left join结果,记录数会多于A表记录数。所以解决办法 都是从一个出发点出发,使A表与B表所显示记录数为 1:1对应关系。...解决方法: 使用非唯一标识字段做关联 1 select DISTINCT(id) from a left join b on a.id=b.aid DISTINCT 查询结果是 第一个表唯一数据...作用是起了,不过他同时作用了两个字段,也就是必须得id与name都相同才会被排除 采用唯一键去关联做链接查询 left join关键字(字段)在product表唯一,所以这部分唯一数据就产生了笛卡尔积...,导致执行结果多于预期结果

17.6K21

sql之left join、right join、inner join区别

left join(左联接) 返回包括左表中所有记录和右表中联结字段相等记录  right join(右联接) 返回包括右表中所有记录和左表中联结字段相等记录 inner join(等值连接)...join sql语句如下:  select * from A left join B  on A.aID = B.bID 结果如下: aID     aNum     bID     bName 1     ...5 行) 结果说明: left join是以A表记录为基础,A可以看成左表,B可以看成右表,left join是以左表为准....5 行) 结果说明: 仔细观察一下,就会发现,和left join结果刚好相反,这次是以右表(B)为基础,A表不足地方用NULL填充. -----------------------------...-------- 注:  LEFT JOIN操作用于在任何 FROM 子句中,组合来源表记录。

1.6K30

inner join、outer join、right joinleft join 之间区别

5 行) 结果说明: left join是以A表记录为基础,A可以看成左表,B可以看成右表,left join是以左表为准....5 行) 结果说明: 仔细观察一下,就会发现,和left join结果刚好相反,这次是以右表(B)为基础,A表不足地方用NULL填充. --------------------------...1.要进行部门表和职工表关联查询,并要查询出所有的部门信息,这时候,下面的左连接查询就能够查询出想要结果,左连接就是以left join前面的表为主表,即使有些记录关联上,主表信息能够查询出来...2.要进行部门表和职工表关联查询,并要查询出所有的职工信息,这时候,下面的右连接查询就能够查询出想要结果,右连接就是以right join后面的表为主表,即使有些记录关联上,主表信息能够查询出来...,全连接查询结果是左外连接和右外连接查询结果并集,即使一些记录关联上,也能够把部分信息查询出来 select * from dept full join  employee on dept.deptid

4.1K30

sql之left join、right join、inner join区别

left join(左联接) 返回包括左表中所有记录和右表中联结字段相等记录 right join(右联接) 返回包括右表中所有记录和左表中联结字段相等记录 inner join(等值连接...join sql语句如下: select * from A left join B on A.aID = B.bID 结果如下: aID     aNum     bID     bName 1     ...5 行) 结果说明: left join是以A表记录为基础,A可以看成左表,B可以看成右表,left join是以左表为准....5 行) 结果说明: 仔细观察一下,就会发现,和left join结果刚好相反,这次是以右表(B)为基础,A表不足地方用NULL填充. -----------------------------...-------- 注: LEFT JOIN操作用于在任何 FROM 子句中,组合来源表记录。

1.7K30

sql之left join、right join、inner join区别

left join(左联接) 返回包括左表中所有记录和右表中联结字段相等记录 right join(右联接) 返回包括右表中所有记录和左表中联结字段相等记录 inner join(等值连接)...join sql语句如下: select * from A left join B on A.aID = B.bID 结果如下: aID     aNum     bID     bName 1     ...5 行) 结果说明: left join是以A表记录为基础,A可以看成左表,B可以看成右表,left join是以左表为准....5 行) 结果说明: 仔细观察一下,就会发现,和left join结果刚好相反,这次是以右表(B)为基础,A表不足地方用NULL填充. -----------------------------...-------- 注: LEFT JOIN操作用于在任何 FROM 子句中,组合来源表记录。

1.5K80

inner joinleft join 之间区别

关于inner joinleft join 之间区别,以前以为自己搞懂了,今天从前端取参数时候发现不是预想中结果,才知道问题出在inner join 上了。...一、sqlleft join 、right join 、inner join之间区别   left join(左联接) 返回包括左表中所有记录和右表中联结字段相等记录    right join...join sql语句如下:  select * from A left join B  on A.aID = B.bID 结果如下: aID     aNum     bID     bName...5 行) 结果说明: left join是以A表记录为基础,A可以看成左表,B可以看成右表,left join是以左表为准....5 行) 结果说明: 仔细观察一下,就会发现,和left join结果刚好相反,这次是以右表(B)为基础,A表不足地方用NULL填充. --------------------------

73410

sql之left join、right join、inner join区别

left join(左联接) 返回包括左表中所有记录和右表中联结字段相等记录 right join(右联接) 返回包括右表中所有记录和左表中联结字段相等记录 inner join(等值连接) 只返回两个表中联结字段相等行...left join是以A表记录为基础,A可以看成左表,B可以看成右表,left join是以左表为准....B表记录不足地方均为NULL. -------------------------------------------- 2.right join 仔细观察一下,就会发现,和left join结果刚好相反...A.aID = B.bID记录.这说明inner join并不以谁为基础,它只显示符合条件记录. -------------------------------------------- 注: LEFT...使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始两个表中全部记录,即使在第二个(右边)表中并没有相符值记录。

1.2K20
领券