MySQL联表查询之连接和子查询

一.连接

内连接:

内连接一共有两种方式:

隐式内连接:

select  字段名 from  表1,表2  where  条件 .....;

显式内连接:

select  字段名 from  表1 [inner]  join 表2  on  连接条件 ;

 内连接就是查询绿色部分,也就是两张或多张表相同的地方

最多的就是等值连接

外连接:

左外连接:

select 字段列表 from  表1 left join 表2  on 条件 .....;

上图中: A 蓝色区域

右外连接:

select 字段列表 from  表1 right join 表2  on 条件 .....;

上图中: B黄色区域

自连接:

自连接,就如它的名字一样,就是一张表自己连接自己,在自连接中一定要为表名取别名,这样才知道条件中事那个表的字段

select 字段列表  from  表A  as  a  jion  表A   as b   on  条件.....;

联表查询例子:

 

二.联合查询

联合查询指的是使用两个sql 去查询两张表,然后拼接成一次结果集返回

关键字:

union  : 拼接的结果去重

union  all:拼接的结果不去重

select  字段列表  from  表 1 ..... 

union

select  字段列表  from  表 2 ..... 

注意:查询出来的结果集字段属性一定是要一样的,不然是拼接不了的

三.子查询

在sql语句中嵌套 select语句成为子查询

子查询语句可以被嵌套到 delete,update,insert ,select 语句中,不仅仅是只能嵌套到select 语句中

select  字段列表  from  表1 where  colum = (select  colum from  表2)

标量子查询:

子查询返回的值是单个值(数据,字符串,日期),这些最简单的形式

常用的操作符:  =   ,  <> ,  >  ,  >=  , <  ,  <=

列子查询:

子查询返回的值是一列

常用的操作符:

in :在范围内

not  in:不在范围内

any :有一个满足即可

some:与any 相同

all:所有返回值必须全部相同

行子查询:

子查询返回值的是一行

常用的操作符:

=  , <>  ,  IN  ,  NOT  IN

表子查询:

子查询返回的结果是多行多列,相当于一个小子表

常用操作符:IN

 

本文转载于网络 如有侵权请联系删除

相关文章

  • 深入浅出监控神器Prometheus

    点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪! 每天10:33 更新文章,每天掉亿点点头发...源码精品专栏原创|Java2021 超神之路,很肝~ 中文详细注释的开源项目 RPC框架Dubbo源码解析网络应用框架Netty源码解析 消息中间件RocketMQ源码解析 数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件TCC-Transaction源码解析Eureka和Hystrix源码解析Java并发源码来源:云加社区简介整体生态工作原理Metric指标PromQLGrafana可视化监控告警简介Prometheus是一个开源的完整监控解决方案,本文将从指标抓取到查询及可视化展示,以及最后的监控告警,对Prometheus做一个基本的认识。Prometheus是古希腊神话里泰坦族的一名神明,名字的意思是“先见之明”,下图中是Prometheus被宙斯惩罚,饱受肝脏日食夜长之苦。下面就是我们CRUDBoy所了解的Prometheus,下面是其官网封面图引导语:Frommetricstoi

  • 轻量!Google 开源了一个简易版 Spring !

    《Java面试指北》来啦!这是一份教你如何更高效地准备面试的小册,涵盖常见八股文(系统设计、常见框架、分布式、高并发......)、优质面经等内容。你好呀,我是Guide!这里是JavaGuide的「Java优质开源项目推荐」第6期,每一期我都会精选5个高质量的Java开源项目推荐给大家。这5个开源项目已经被收录进了awesome-java(非常棒的Java开源项目集合,找Java项目必备)。Github地址:https://github.com/CodingDocs/awesome-javaGitee地址:https://gitee.com/SnailClimb/awesome-java在线阅读(阅读原文即可直达):https://javaguide.cn/open-source-project/Guice:轻量级依赖注入框架Guice是Google开源的一个轻量级依赖注入框架,相当于一个功能极简化的轻量级SpringBoot。在某些情况下非常实用,就比如说我们的项目只需要使用依赖注入,不需要AOP等功能特性。Guice的HelloWorld示例如下:在第五期项目推荐一个比Sprin

  • Caché 变量大全 $ZA 变量

    Caché变量大全$ZA变量包含当前设备上最后一次读取的状态。大纲$ZA复制描述$ZA包含当前设备上最后一次读取的状态。不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。注意$ZA,带终端I/O$ZA被实现为一系列位标志,每个位表示一条特定的信息。下表显示了可能的值、它们的含义,以及如何使用模(#)和整数除(\)运算符测试它们:位测试含义0$ZA#2<CTRL-C>已到达,无论是否启用中断。1$ZA\2#2读取超时。2$ZA\4#2I/O错误。8$ZA\256#2Caché检测到无效的转义序列。9$ZA\512#2硬件检测到奇偶校验或成帧错误。11$ZA\2048#2进程已与其主设备断开连接。12$ZA\4096#2对于COM端口:CTS(清除发送)。从调制解调器发送到其计算机的信号,表示传输可以进行。对于TCP设备:设备在服务器模式下运行。13$ZA\8192#2对于COM端口:DSR(数据集就绪)。从调制解调器发送到其计算机的信号,表示调制解调器已准备好运行。对于TCP设备:设备当前处于与远程主机通话的已连接状态。14$ZA\16384

  • 天池 在线编程 木材加工(二分查找)

    文章目录1.题目2.解题1.题目有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为k。 当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度。木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是整数。 无法切出要求至少k段的,则返回0即可。示例 样例1 输入: L=[232,124,456] k=7 输出:114 Explanation:我们可以把它分成114cm的7段,而115cm不可以 样例2 输入: L=[1,2,3] k=7 输出:0 说明:很显然我们不能按照题目要求完成。复制https://tianchi.aliyun.com/oj/231203672248052266/2455805963693635852.解题二分查找模板题classSolution{ public: /** *@paramL:GivennpiecesofwoodwithlengthL[i] *@paramk:Aninteger *@return:Themaximumlengthofthesmallpieces */

  • ​LeetCode刷题实战148:排序链表

    今天和大家聊的问题叫做排序链表,我们先来看题面:https://leetcode-cn.com/problems/sort-list/Giventheheadofalinkedlist,returnthelistaftersortingitinascendingorder. Followup:CanyousortthelinkedlistinO(nlogn)timeandO(1)memory(i.e.constantspace)?题意给你链表的头结点head,请将其按升序排列并返回排序后的链表。进阶:你可以在O(nlogn)时间复杂度和常数级空间复杂度下,对链表进行排序吗?样例解题https://blog.csdn.net/qq_41855420/article/details/87901524解题思路:思路分析:由于题目特意要求O(nlogn)时间复杂度和常数级空间复杂度所以不能使用冒泡、计数排序啥的,比较符合要求的就是归并排序。归并排序:排序一段序列分为排序前部分、后部分,再合并两个已经排序好的部分。/** *Definitionforsingly-linkedlist. *s

  • 尾款人的双11焦虑症:配送机器人能解?

    配图来自Canva可画随着今年双11高潮落幕,尾款人也进入了等快递的煎熬时期。近日,多处快递网点停运的事件,更是让尾款人感到焦虑。而像双11这样的包裹量高峰时期,快递行业人力短缺的问题更加严重,由此导致从配送网点到客户手中的“最后一公里”配送滞后问题愈加严峻。这无疑对用户体验、配送网点的运转,产生了极大的负面影响。为解决这些问题,快递行业推出了自提、代收等多种模式,但这些模式也各有利弊,并没有真正有效的解决“最后一公里”的配送问题。近年来,无人配送的兴起,为解决“最后一公里”的配送难题,提供了新的思路。不过,由于存在交通安全、成本等多方面的难题,当前无人配送的商业化推进还面临着重重困境。因此,无人配送能否真正解决物流行业“最后一公里”配送的问题,仍存在着诸多不确定性。“最后一公里”难题待解物流行业苦“最后一公里”配送难题久矣。对物流公司来说,用户在互联网上购买商品后,商家提供货物及发货信息,整个物流运输就开始了。在经过重重分拣、运输后,快件最后达到配送网点,再经由最近的配送网点,送到用户手中,整个配送活动就完成了。而由最后的配送网点到用户手中的环节,就是物流配送的“最后一公里”。但就是

  • 如何做好稳定性

    电商类的网站不可避免要面对大促的话题,每次大促对系统的可用性要求很高,是对技术人的一次考验,所以要做好整套的方案来保证。我所在的公司为手机公司,每年新品销售的时候,流量也是非常大,是平时的10倍,甚至上百倍,今天来聊一聊稳定性相关的话题,谈下如何做好稳定性。 一、梳理主链路,保证主链路的可用性电商类的主链路就是从商品浏览,到添加购物车,保存订单,支付等完整下单链路。梳理主链中的目的有:1、避免单点一般来说要尽量避免在主链路中访问数据库,因为数据库扩容比较麻烦,当然如果公司的分库分表做的很好了,也是可以的,主要是保证每一个节点都可以水平扩容。2、梳理强弱依赖什么是强、弱依赖,这个网上已经有不少介绍了,即如果调用某个服务挂了不影响主流程,或者可以通过其它手段恢复,则不要返回错误给用户,或者可以通过开关降级掉。举个例子:添加用户地址时,需要发MQ记录操作流水,其中MQ如果发送失败应该只打印下日志,而不应该直接返回错误给用户。3、避免不合理的调用 常见问题有:循环调用服务;调用接口过多(见到一个页面下来就调用4,5个接口的)常见的方案有:1)、缓存一些访问量特别大的,对数据一致性要求没那么高的

  • 1.3MB的超轻YOLO算法!全平台通用,准确率接近YOLOv3,速度快上45%丨开源

    萧箫发自凹非寺 量子位报道|公众号QbitAI 最轻的YOLO算法出来了!这是个模型非常小、号称目前最快的YOLO算法——大小只有1.3MB,单核每秒148帧,移动设备上也能轻易部署。而且,这个YOLO-Fastest算法满足所有平台的需要。不论是PyTorch,还是Tensorflow,又或者是Keras和Caffe,可以说是全平台通用。此外,作者还推出了超轻YOLO的“加大版”,同样只需要3.5MB,就能实现比YOLOv3更好的目标检测效果。那么,这么轻的网络,检测效果怎么样?1.3MB的超轻YOLO检测效果下图是一只快速跑动的动物,可以看见,算法预测这只动物为鸡(chicken)的概率是95%。不仅在动物检测上,对于人的检测效果也不错。从图中可见,正面人物的预测概率都超过了90%,即使是接近侧面的人脸,系统也能准确预测出来,只是概率会偏小,接近50%。此外也能看见,YOLO不仅能检测行人和动物,类似于餐桌和瓶子这样的目标物体也能检测出来。当然,桌上还有其他的瓶子,不过没有检测出来。而这样的检测效果,只需要1.3MB大小的YOLO-Fastest模型,相比于3.0MB的Mobile

  • Shell 脚本的 10 个有用的“面试问题和解答”

    Linux的浩瀚无垠,使人总能每次都提交与众不同的内容。这些内容不仅对他们的职业生涯很有用,同时也让他们增长知识。在此,我们就尝试这么去做,至于能取得多大的成功,就由我们的读者朋友们来判断吧。 在此,作为shell脚本的附加内容,在本文中我们将从面试的角度解读与LinuxShell相关的问题。1.在shell脚本成功执行前,如何中断脚本执行?解答:我们需要使用‘exit’命令来实现以上描述的情境。‘exit’命令被强制输出非0值时,脚本会报错并退出。在Unix环境下的shell脚本中,0值表示成功执行。因此,在脚本终止前执行一个不带引号的‘exit-1’命令将使脚本中止。例如,创建以下一个名为“linuxmi.sh”的脚本。#!/bin/bash echo"Hello" exit-1 echo"bye"复制保存文件并执行。#shlinuxmi.sh Hello linuxmi.sh:行3:exit-1:未找到命令 bye复制从上面的脚本中可以清楚地看到,在exit-1命令前,脚本执行得很好。2.如何使用Linux命令来移除文件头?解答:当我们需要

  • CornerNet: 成对关键点物体检测 | CSDN博文精选

    作者|贾小树文章目录1、论文总述2、使用锚定框的两个缺点3、角点检测比边界框中心或proposals效果好的两个原因4、cornerpooling5、用于GroupingCorners的embeddingvector的工作原理6、正负样本的分配方式(改进的focalloss)7、角点的offset预测8、测试细节9、MSCOCO的使用10、选HourglassNetwork还是resnet?11、错误分析12、与最先进的检测器对比参考文献1、论文总述本文是2018年ECCV的一篇oral,anchorfree的新思路的目标检测的文章,其中2019年的几篇文章都是基于这篇paper改进的(两篇centernetcornernet_litegrid_rcnn等,后面还得看这几篇论文。。),借鉴了这个思路,即将目标检测与关键点检测(目标分割的知识)结合起来,不再采用以前流行的:先提前设定好多不同尺度和shape的anchors然后训练时候不断回归到GT。本文思路:直接预测各个目标的左上和右下角点,然后这俩角点一组合就能框住这个目标,想法很直接,应该有很多先进的科研工作者尝试过这个想法,但为了

  • 【故障排查】nginx504

    技术背景LNMP环境下,反向代理服务器nginx错误日志大量报错,显示504504.pngupstreamtimedout(10060:Aconnectionattemptfailedbecausetheconnectedpartydidnotproperlyrespondafteraperiodoftime,orestablishedconnectionfailedbecauseconnectedhosthasfailedtorespond)whilereadingresponseheaderfromupstream 理论回看Nginx504GatewayTime-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI一般情况下,web应用程序提交动态请求的时候,nginx会直接把请求转交给php-fpm,而php-fpm再分配php-cgi进程来处理相关的请求,之后再依次返回,最后由nginx把结果反馈给客户端浏览器。原因列举如下1作为调用方,服务提供方接口异常,造成访问超时,nginx交由PHP处理的任务长时间没有返回,nginx直接返回504。而这

  • 数据库的异地多活分析和方案

    前言 前文提到异地多活的几种型态和基于OceanBase实现方案。这里再总结一下基于其他分布式数据库(MySQL)实现异地多活时要考虑的点。本文不讨论为什么做异地多活,可以参考末尾的文章。异地多活的目标 首先引用前文的分析。异地多活的概念一直都有,只是内涵不断变化。以双机房多活为例,应用通常都是无状态的,可以多地部署。数据库有状态,传统数据库只有主库可以提供读写,备库最多只能提供只读服务(如ORACLE的ActiveDataguard): 1.应用双活,数据库A地读写,B地不可读写。这种只有应用多活,数据库是异地备份容灾(无并发)。 2.应用双活,数据库A地读写,B地只读。这种也是应用双活,数据库读写分离(实例级并发)。 3.应用双活,数据库双活,两地应用同时读写不同表。这种数据库双向同步,应用同时错开写不同的数据(表级并发)。 4.应用双活,数据库双活,两地应用同时读写相同表不同记录。这种数据库双向同步,应用同时错开写不同的数据(行级并发)。 5.应用双活,数据库双活,两地应用同时读写相同表相同记录。这种数据库双向同步,应用同时写相同的数据,最终会因为冲突一方事务回滚(行级并发写冲突

  • iOS开发之虾米音乐频道选择切换效果分析与实现

    今天博客的内容比较简单,就是看一下虾米音乐首页中频道选择的一个动画效果的实现。之前用mask写过另外一种Tab切换的一种效果,网易云音乐里边的一种Tab切换效果,详情请移步于"视错觉:从一个看似简单的自定义控件说起"。,下面会对效果进行分析,并且根据自己的理解去实现一个类似的频道选择切换效果。代码会在Github上进行分享,Demo实现时依然是使用的Swift语言。一、切换效果分析下方是“虾米音乐”中的切换效果,其切换效果在前几次的切换中是有bug的,切换时会闪一下,应该与其内部实现机制有关吧。本篇博客是实现该切换效果,但实现方式是根据自己的理解来实现的,应该与“虾米音乐”这个实现方式会有不同。从下方效果可以直观的看出,当点击切换时被选中的Tab会放大,并且上次选中的Tab会缩小到原来未选中的状态。不难看出在放大时SelectTab的基线是不变的,就是放大的效果是从下往上去走的。具体效果就不多说了,直接看下方的GIF吧。今日头条也是有类似选中放大Tab的效果,但是与下方的这个放大效果大大不同,可以说“今日头条”内个切换放大的效果实现起来是比较简单的,因为其放大是基于

  • Elasticsearch技术解析与实战(10)ElasticSearch Head

    序言 安装ElasticSearchHead,它相当于是ES的图形化界面,这个更简单,它是一个浏览器的扩展程序,直接在chrome浏览器扩展程序里下载安装即可: 打开chrome浏览器,在扩展程序chrome应用商店那里,搜索elasticsearch: 选择ElasticSearchHead,点击添加至Chrome,进行扩展程序的安装即可:             资料

  • Http状态码

    1xx正在处理200OK-[GET]:请求成功,服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。 201CREATED-[POST/PUT/PATCH]:用户新建或修改数据成功。 202Accepted-[*]:表示一个请求已经进入后台排队(异步任务) 204NOCONTENT-[DELETE]:用户删除数据成功。3xx重定向 400INVALIDREQUEST-[POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。 401Unauthorized-[*]:表示用户没有权限(令牌、用户名、密码错误)。 403Forbidden-[*]表示用户得到授权(与401错误相对),但是访问是被禁止的。 404NOTFOUND-[*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。 406NotAcceptable-[GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。 410Gone-[GET]:用户请求的资源被永久删除,且不会再得到的。 422Unprocesabl

  • Oracle 12c pdb的数据泵导入导出

    12c推出了可插拔数据库,在一个容器cdb中以多租户的形式同时存在多个数据库pdb。在为pdb做数据泵导入导出时和传统的数据库有少许不同。         1,需要为pdb添加tansnames         2,导入导出时需要在userid参数内指定其tansnames的值,比如userid=user/pwd@tnsname 数据泵导入导出例子1、查看当前的SID,查看pdb并切换到容器数据库,这里的pluggable数据库是pdborcl[oracle@xqztadmin]$echo$ORACLE_SID orcl复制 登录cdb,查看pdb, SQL>showcon_name CON_NAME ------------------------------ CDB$ROOT SQL>showpdbs CON_IDCON_NAMEOPENMODERESTRICTED -

  • Jquery--ajax

    --实例: $.ajax({ url:'/location/get_location_top_module', type:'post', data:{ state:state, county:county, zip:zip, city:city, page_type:page_type }, success:function(data){ if(data.top_results!==undefined&&data.top_results!==null&&data.top_results.length>0){ top_html=""; $.each(data.top_results,function(i,value){ top_html+='<div>'; top_html+=value; top_html+='</div>'; }); $(".location-container").addClass("location-left"); $(".location-top-container").html(top_html)

  • Hadoop总结

    背景 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 Mapreduce1vsYARN Mapreduce1 我们首先来看一下整体架构 JobTracker是Map-reduce框架的中心,他需要与集群中的机器定时通信(heartbeat),需要管理哪些程序应该跑在哪些机器上,需要管理所有job失败、重启等操作 TaskTracker是Map-reduce集群中每台机器都有的一个部分,他做的事情主要是监视自己所在机器的资源情况。TaskTracker同时监视当前机器的tasks运行状况。TaskTracker需要把这些信息通过heartbeat发送给JobTracker,JobTracker会搜集这些信息以给新提交的job分配运行在哪些机器上。上图虚线箭头就是表示消息的发送-接收的过程 我们接下来解释一下一个任务提交的整体流程 在客户端启动一个作业。 向JobTracker请求一个JobID。 将运行作业所需要的资源文件复制到HDFS上,包括MapReduce程序打

  • JavaScript语法_逻辑运算符和JavaScript语法_三元运算符

    JavaScript语法_逻辑运算符: 逻辑运算符: &&:与(短路) ||:或(短路) !:非 其他类型转boolean: 1.number:0或NaN为假,其他为真 2.string:除了空字符串(""),其他都是true 3.null&undefined:都是false 4.对象:所有对象都为true 代码实现: <!DOCTYPEhtml> <html> <head> <metacharset="UTF-8"> <title>JS逻辑运算符</title> <!--内部JS--> <script> //boolean类型 letflag=true; document.write(flag+"<br>"); document.write(!flag+"<br>"); //水平线 document.write("<hr>"); //number类型 letnum=3; letnum2=0; letnum3=NaN; do

  • OpenCV 图像和ROI去畸变

    voidcalibration_distort(stringcur_photo_path){ cv::MatcameraMatrix[70]; cv::MatdistortionCoeff[70]; std::vector<cv::Mat>undistortImg(70); std::stringdatapath="./data"; for(inti=0;i<NUM_CAMS;i++) { cout<<"undistortingcam:"<<i+1<<""<<cur_photo_path<<endl; intcamera_id=i; loadcamerapara(cameraMatrix[i],distortionCoeff[i],camera_id,datapath); undistortImgandjson(cameraMatrix[i],distortionCoeff[i],camera_id,undistortImg[i],datapath,cur_photo_path); cv::imwrite("

  • 【动态规划】洛谷 P1282 多米诺骨牌

    【动态规划】洛谷P1282多米诺骨牌 时间限制:1Sec  内存限制:128MB 题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点。现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|。例如在图8-1中,S1=6+1+1+1=9,S2=1+5+3+2=11,|S1-S2|=2。每个多米诺骨牌可以旋转180°,使得上下两个方块互换位置。编程用最少的旋转次数使多米诺骨牌上下2行点数之差达到最小。     对于图中的例子,只要将最后一个多米诺骨牌旋转180°,可使上下2行点数之差为0。 输入格式 输入文件的第一行是一个正整数n(1≤n≤1000),表示多米诺骨牌数。接下来的n行表示n个多米诺骨牌的点数。每行有两个用空格隔开的正整数,表示多米诺骨牌上下方块中的点数a和b,且1≤a,b≤6。 输出格式 输出文件仅一行,包含一个整数。表示求得的最小旋转次数。 输入输出样例 输入#1 4 61 15 13 12 复制 输出#1 1复制 思路   看到题目之后我们分析一下,对于每个骨牌,因为不能

相关推荐

推荐阅读