MySQL多表关联查询

目录

1. inner join:

2. left join:

3. right join:

4.自连接

5.交叉连接:

6、联合查询

7、子查询


1. inner join:

        代表选择的是两个表的交差部分。

内连接就是表间的主键与外键相连,只取得键值一致的,可以获取双方表中的数据连接方式。语法如下:
SELECT 列名1,列名2... FROM 表1 INNER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;

2. left join:

        代表选择的是前面一个表的全部。
左连接是以左表为标准,只查询在左边表中存在的数据,当然需要两个表中的键值一致。语法如下:
SELECT 列名1 FROM 表1 LEFT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;

3. right join:

        代表选择的是后面一个表的全部
同理,右连接将会以右边作为基准,进行检索。语法如下:
SELECT 列名1 FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;

4.自连接

自连接顾名思义就是自己跟自己连接,参与连接的表都是同一张表。(通过给表取别名虚拟出)


 自连接例子:

一张zone表,查询 国家-省份-城市 在一张表上

select t1.name as 国家,t2.name as 省份,t3.name as 城市 from zone as t1 inner join zone as t2 inner join zone  as t3 on t1.id=t2.parent_id and t1.parent_id is null and t2.id=t3.parent_id;
select t1.name as 国家,t2.name as 省份,t3.name as 城市 from zone as t1 inner join zone as t2 on t1.id=t2.parent_id and t1.parent_id is null inner join zone as t3 on t2.id=t3.parent_id;

5.交叉连接:

不适用任何匹配条件。生成笛卡尔积


6、联合查询

说明:一般情况下,我们会将 IN 或者 OR 语句 改写成 UNION ALL,来提高性能
UNION   去重复
UNION ALL 不去重复
 

7、子查询

子查询将一个查询语句嵌套在另一个查询语句中。

内部嵌套其他select语句的查询,称为外查询或主查询

内层查询语句的查询结果,可以为外层查询语句提供查询条件。

子查询中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等关键字
还可以包含比较运算符:= 、 !=、> 、<等

注意:

1、子查询要包含在括号内。

2、将子查询放在比较条件的右侧。

3、单行操作符对应单行子查询,多行操作符对应多行子查询


子查询例子:

仅查询省份

select t2.name 省份 from zone as t2 where t2.parent_id in (select t1.id from zone as t1 where t1.parent_id is null);

查询国家与省份:

select (select t3.name from zone as t3 where t3.id=t2.parent_id) as 国家,t2.name as 省份 from zone as t2 where t2.parent_id in (select t1.id from zone as t1 where t1.parent_id is null);

 


 

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

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

相关文章

Grafana展示k8s中pod的jvm监控面板/actuator/prometheus

场景 为保障java服务正常运行&#xff0c;对服务的jvm进行监控&#xff0c;通过使用actuator组件监控jvm情况&#xff0c;使用prometheus对数据进行采集&#xff0c;并在Grafana展现。 基于k8s场景 prometheus数据收集 配置service的lable&#xff0c;便于prometheus使用labl…

【ES6】深入理解ES6(1)

一、块级作用域绑定 var声明及变量提升机制 二、字符串和正则表达式 字符串&#xff08;String&#xff09;是JavaScript6大原始数据类型。其他几个分别是Boolean、Null、Undefined、Number、Symbol&#xff08;es6新增&#xff09;。 更好的Unicode支持 1. UTF-16码位 字…

【Archaius技术专题】「Netflix原生态」动态化配置服务之微服务配置组件变色龙

前提介绍 如果要设计开发一套微服务基础架构&#xff0c;参数化配置是一个非常重要的点&#xff0c;而Netflix也开源了一个叫变色龙Archaius的配置中心客户端&#xff0c;而且Archaius可以说是比其他客户端具备更多生产级特性&#xff0c;也更灵活。*在NetflixOSS微服务技术栈…

《Java-SE-第三十四章》之Optional

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…

RFID工业识别技术:供应链智能化的科技颠覆

RFID工业识别技术&#xff0c;作为物联网的先锋&#xff0c;正在供应链管理领域展现着前所未有的科技颠覆。从物料追踪到库存管理&#xff0c;再到物流配送&#xff0c;RFID技术以其高效的数据采集和智能的自动化处理&#xff0c;彻底改变着传统供应链的运营方式。 RFID在物料追…

全国各城市-货物进出口总额和利用外资-外商直接投资额实际使用额(1999-2020年)

最新数据显示&#xff0c;全国各城市外商直接投资额实际使用额在过去一年中呈现了稳步增长的趋势。这一数据为研究者提供了对中国外商投资活动的全面了解&#xff0c;并对未来投资趋势和政策制定提供了重要参考。 首先&#xff0c;这一数据反映了中国各城市作为外商投资的热门目…

Prometheus入门

Prometheus(普罗米修斯) 是一种 新型监控告警工具,Kubernetes 的流行带动了 Prometheus 的应用。 全文参考自 prometheus 学习笔记(1)-mac 单机版环境搭建[1] Mac 上安装 Prometheus brew install prometheus 安装路径在 /usr/local/Cellar/prometheus/2.20.1, 配置文件在 /usr…

群晖安装wireguard(群晖7.1)

前言 上篇文章介绍了乌班图如何安装wireguard&#xff0c;但是感觉虚拟机安装有损优雅性。 本期视频我们介绍使用群晖安装wireguard。 由于原来黑群晖内核版本太低了。 我这里升级到群晖dns918&#xff08;7.1版本&#xff09; 内核版本为4.4 实际上这仍然不满足wireguar…

k8s之StorageClass(NFS)

一、前言 1、环境 k8s v1.23.5 &#xff0c;服务器是centos7.9 192.168.164.20 k8s-master1 192.168.164.30 k8s-node1 192.168.164.40 k8s-node2 2、貌似storageClass在kubernetes v1.20就被砍了。 因为它比较慢&#xff0c;而且耗资源&#xff0c;但可以通过不同的实现镜…

SpringBoot启动图标替换-banner文件

1.banner.txt文件内容如下 ${AnsiColor.BRIGHT_YELLOW}${AnsiStyle.BOLD}_________ .__ __________ __ / _____/____________|__| ____ ____\______ \ ____ _____/ |_ \_____ \\____ \_ __ \ |/ \ / ___\| | _//…

cmake扩展(1)——VS+CMake创建Qt项目

创建项目 创建CMakeLists #cmake最低版本 cmake_minimum_required(VERSION 3.10) #项目名 project(regextool)#查找所有*.h,*.ui,*.cpp文件&#xff0c;并存入SOURCES中 file(GLOB SOURCES "*.cpp" "*.ui" "*.h")#开启moc set(CMAKE_AUTOMOC O…

Leetcode33 搜索旋转排序数组

题解&#xff1a; /*** 旋转排序数组可分为N1 N2两个部分&#xff0c;如&#xff1a;[4,5,6,7,1,2,3]&#xff0c;N1为[4,5,6,7]&#xff0c;N2为[1,2,3]** 必然满足以下两个条件&#xff1a;* 1. N1和N2都是分别递增的&#xff1b;* 2. N1中的所有元素大于N2中的所有元素;** …