• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql

mysql 搞代码 7年前 (2018-06-07) 346次浏览 已收录 0个评论

mysql学习总结(24)——MySQL多表查询合并结果和内连接查询

1、使用union和union all合并两个查询结果:select 字段名 from tablename1 union select 字段名 from tablename2;
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql

注意这个操作必须保证两张表字段相同,字段数据类型也相同。另外,使用union的时候会去除重复(相同)的记录,而union all则不会。

注:下边的几个连接查询涉及到笛卡尔积的概念,即如果存在两张表,第一张记录数为n条,另一张表的记录数为m条,那么笛卡尔积得出的记录数就是n*m条;如果第一张表的字段数为a个,另一张的字段数为b个,则笛卡尔积得出的字段数就是a+b个。

2、使用natural join自然连接:前提是两张表有相同的字段:(这个操作会去掉重复的字段)
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql

对于这个查询,我的理解是:保留这两张表中关联字段(例如这里的depart_id)都存在的数据,去掉只有一个表中有的:
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql

如上述内容中,company中有四条数据,而emp中有7条,结果不论哪个放前边都只出来六条,因为company中depart_id为4的,emp中没有,而emp中depart_id为5的,company中又没有。

3、inner join on等值连接查询:
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql

这个操作在我理解,和上边的自然连接区别就在于没有去掉重复的字段,还有更加的灵活,不需要有相同字段名的字段:
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql

4、inner join on不等值连接查询:
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql

对于这个查询,我的理解就是,他是“=”查询的补集,即这个查询的结果集 = 笛卡尔积结果集  减去“=”查询的结果集;本例中,company有4条记录,emp有7条记录,笛卡尔积是4*7=28条记录;“=”查询的结果是6条记录,一次"!="查询就应该是其余的22条记录。

5、从上边的操作中可以拓展出另一种查询:字连接查询,即实际只有一张表,用重命名的方式当成两张来用:
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql
Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql

可以看到,根据笛卡尔积,这里应该有4*4=16条结果,但是因为有了条件,就筛选出了四条

欢迎大家阅读《Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Mysql学习小结(24)——MySQL多表查询合并结果和内连接查询_mysql
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址