mysql联合查询语句详解_实例讲解MySQL联合查询

1. 内联结:

Select A.Name, B.Hobby from A, B where A.id = B.id,这是隐式的内联结,查询的结果是:

Name

Hobby

Tim

Football

Jimmy

Basketball

Jimmy

Tennis

Tom

Soccer

它的作用和 Select A.Name from A INNER JOIN B ON A.id = B.id是一样的。这里的INNER JOIN换成CROSS JOIN也是可以的。

2. 外左联结

Select A.Name from A Left JOIN B ON A.id = B.id,典型的外左联结,这样查询得到的结果将会是保留所有A表中联结字段的记录,若无与其相对应的B表中的字段记录则留空,结果如下:

Name

Hobby

Tim

Football

Jimmy

Basketball,Tennis

John

Tom

Soccer

所以从上面结果看出,因为A表中的John记录的ID没有在B表中有对应ID,因此为空,但Name栏仍有John记录。

3. 外右联结

如果把上面查询改成外右联结:Select A.Name from A Right JOIN B ON A.id = B.id,则结果将会是:

Name

Hobby

Tim

Football

Jimmy

Basketball

Jimmy

Tennis

Tom

Soccer

这样的结果都是我们可以从外左联结的结果中猜到的了。

说到这里大家是否对联结查询了解多了?这个原本看来高深的概念一下子就理解了,恍然大悟了吧(呵呵,开玩笑了)?最后给大家讲讲MySQL联结查询中的某些参数的作用:

1.USING (column_list):其作用是为了方便书写联结的多对应关系,大部分情况下USING语句可以用ON语句来代替,如下面例子:

a LEFT JOIN b USING (c1,c2,c3),其作用相当于下面语句

a LEFT JOIN b ON a.c1=b.c1 AND a.c2=b.c2 AND a.c3=b.c3

只是用ON来代替会书写比较麻烦而已。

2.NATURAL [LEFT] JOIN:这个句子的作用相当于INNER JOIN,或者是在USING子句中包含了联结的表中所有字段的Left JOIN(左联结)。

3.STRAIGHT_JOIN:由于默认情况下MySQL在进行表的联结的时候会先读入左表,当使用了这个参数后MySQL将会先读入右表,这是个MySQL的内置优化参数,大家应该在特定情况下使用,譬如已经确认右表中的记录数量少,在筛选后能大大提高查询速度。

最后要说的就是,在MySQL5.0以后,运算顺序得到了重视,所以对多表的联结查询可能会错误以子联结查询的方式进行。譬如你需要进行多表联结,因此你输入了下面的联结查询:

SELECT t1.id,t2.id,t3.id

FROM t1,t2

LEFT JOIN t3 ON (t3.id=t1.id)

WHERE t1.id=t2.id;

但是MySQL并不是这样执行的,其后台的真正执行方式是下面的语句:

SELECT t1.id,t2.id,t3.id

FROM t1,( t2 LEFT JOIN t3 ON (t3.id=t1.id) )

WHERE t1.id=t2.id;

这并不是我们想要的效果,所以我们需要这样输入:

SELECT t1.id,t2.id,t3.id

FROM (t1,t2)

LEFT JOIN t3 ON (t3.id=t1.id)

WHERE t1.id=t2.id;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ci 样式路径

路径里大凡从application 里面出来的,都不行,估计这已给ci设置成不能从外面读这个目录。即便是htaccess 添加application 也不行。。。 ci的模版是都放在 views下面,而且可以再嵌套在views下面的其他目录里面,但是这个时候&#…

具有Spring Boot和数据功能的Java头优先弹性搜索

在本文中,我将为您提供有关如何在Java项目中使用Elastic Search的简单介绍。 由于Spring Boot是开始我们项目的最简单,最快的方法,因此我选择使用它。 此外,我们将大量使用心爱的Spring Data的Repository Goods。 首先&#xff0…

python 表单中值为空的还需要传入么_牛掰!100行Python,自动动手打造一款多国语言翻译软件...

大家在平时的学习或者工作中,往往少不了要阅读外文的文献,或者将外文的文献翻译成中文。这时候就需要打开网页,然后进行搜索,非常的麻烦。既然是玩Python,小编就带领大家来打造一款多种语言翻译的软件,无需…

使用Visual Studio 2010 一步一步创建Powershell Module 和 Cmdlet

之前写了一个C# 调用PowerShell方法, 那么怎么反过来操作呢,也就是怎么样用C#写一个powershell命令呢? 现在就用C#写一个超级简单的Module和Cmdlet 1. 在VS中创建一个Library的项目 文件->新建->项目->C#->Class Library 在这里给…

休眠锁定模式– PESSIMISTIC_FORCE_INCREMENT锁定模式如何工作

介绍 在我以前的文章中 ,我介绍了OPTIMISTIC_FORCE_INCREMENT锁定模式,并将其应用于将子实体版本更改传播到锁定的父实体。 在本文中,我将介绍PESSIMISTIC_FORCE_INCREMENT锁定模式,并将其与乐观的锁定模式进行比较。 相像多于不…

Android防盗系统推荐

智游防盗是北京智游网安科技有限公司推出的一款手机防盗软件。智游防盗主要功能分为近身防盗和远程防盗。其中近身防盗包括“包包模式”,“静止模式”,“口袋模式”,“充电模式”四个防盗模式。开启“包包模式”后,当手机被拿出包…

实用程序类与函数式编程无关

最近,我被指控反对函数式编程,因为我将实用程序类称为反模式 。 绝对是错的! 好吧,我确实认为它们是一种糟糕的反模式,但是它们与函数式编程无关。 我相信有两个基本原因。 首先,函数式编程是声明性的&…

MySQL5.5加主键锁读问题【转】

【来自:http://dinglin.iteye.com/blog/1884696】背景 有同学讨论到MySQL 5.5下给大表加主键时会锁住读的问题,怀疑与fast index creation有关,这里简单说明下。 对照现象 为了说明这个问题的原因,有兴趣的同学可以做对比实验。 1…

freeredius3.0 mysql_EDIUS视频采集卡 STROM 3G HD/HD SDI

EDIUS STROM 3G HD/HD SDI高清非编系统视音频采集卡STORM 3G? 适用于视频专业人士,满足基于SDI编辑和无带化工作流程,同时可以在低成本的HDMI监/视器上预监。基于PCIe插口类型的STORM 3G解决方案包括EDIUS?非线性编辑软件,3G HD…

Openshift:使用Java 8在Wildfly 8.2.0上构建Spring Boot应用程序

OpenShift DIY墨盒是在OpenShift上测试不受支持的语言的好方法。 但是它不具有可伸缩性(您可以在此处为可伸缩DIY墨盒投票),这使得它很难与生产级Spring Boot应用程序一起使用。 但是,如果我们将Spring Boot应用程序部署到WildFly…

mysql索引ppt2020_mysql数据库索引

cmd 命令行1、mysql -u root -p ------进入数据库2、use mysql -------使用数据库3、show index from table_name; ------查看某张表的索引4、删除索引其中任一条drop index index_name on table_name ;alter table table_name drop index index_name ;alter tab…

response.sendRedirect使用注意事项 .

response.sendRedirect使用注意事项 . 问题:最近在调试xwiki的时候遇到java.lang.IllegalStateException异常,解决方案:在response.sendRedirect("")方法后加return;语句即可:原因是在程序中两次调用respons…

以编程方式确定Java类的JDK编译版本

当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的“主要版本”。 我在博客文章Autoboxing,Unboxing和NoSuchMethodError中引用了这种方法,但是在继续以编程方式实现此方法之前&…

mysql传输数据到中间表_mysql通过中间表实现数据的“部分复制” -电脑资料

一、基本思路1.在主库上,为不同的从库建立各自的中间表2.主库与从库之间只对“中间表”进行复制操作3.从库上,“中间表”通过触发器,实现与“实体表”的数据同步二、主库结构与配置主库结构:主库配置:三、从库结构与配…

NO1:在Windows端安装SecureCRT来连接Linux

正常情况下都不会直接在Linux服务端进行操作,实际使用服务器和工作电脑不会在同一个地方,也不允许在服务器操作。 我这里用SecureCRT 7.0来连接服务器。提供个下载,带注册机工具:http://pan.baidu.com/share/link?shareid1430164…

如何使用Spring Security和Basic身份验证保护Jersey REST服务

在我之前的博客文章“ 检查REST API是否有效的快速方法–从清单文件中获取GET详细信息”中 ,我展示了如何开发REST资源以轻松检查开发的REST API是否可用。 在本文中,我将介绍如何使用Spring Security和基本身份验证来保护此资源的安全性– “在HTTP事务…

python提取数据段_python提取数据段 python数据分析

如何在python中用slice分段取数据?执行以下操作:&gt&gt arange(6)&gt&gt a[0,1,2,3,4,5]&gt&gt a[0:3],a[5][[2,3,4,4&a…

计算几何相关资料+题目推荐(不定期补充)

旋转卡壳:http://blog.csdn.net/accry/article/details/6070626 计算几何题目推荐:http://blog.csdn.net/accry/article/details/6070656 先是计算几何入门题推荐 : 计算几何题的特点与做题要领:1.大部分不会很难,少部…

一个JAXB Nuance:字符串与枚举(受限制的XSD字符串)

尽管用于XML绑定的Java体系结构 ( JAXB )在名义情况下(尤其是自Java SE 6以来) 相当容易使用,但它也存在许多细微差别。 一些常见的细微差别是由于无法将 XML模式定义 (XSD)类型与Java 类型精确…

weblogic概览下的上下文根配置_weblogic创建域

WebLogic 域配置策略在本文的 第一部分 (第 8 期,卷 3 , WLDJ )中,我曾向您详细介绍了可用于创建和配置域,以及经 过评估的指南和模板选项的不同策略。 ...startWebLogic.cmd 2.startWebLogic-8001.cmd 输入域的管理名和密码即可运行 新建一个停止脚本:stopWebLogic-8001.cmd 内…