当前位置: 首页 > news >正文

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.lryc.cn/news/121410.html

相关文章:

  • flutter开发实战-CustomClipper裁剪长图帧动画效果
  • CSS 中的优先级规则是怎样的?
  • 概率图模型(Probabilistic Graphical Model,PGM)
  • Oracle 知识篇+会话级全局临时表在不同连接模式中的表现
  • MySQL 数据库文件的导入导出
  • 找不到资产文件project.assets.json
  • 【python】python将json字符串导出excel | pandas处理json字符串保存为csv
  • opencv 基础54-利用形状场景算法比较轮廓-cv2.createShapeContextDistanceExtractor()
  • 分布式系统理论
  • Gartner发布2023年的存储技术成熟曲线
  • c++ 有元
  • 安卓:网络框架okhttp
  • Python爬虫 爬取图片
  • 【云原生】Pod详讲
  • 先进先出的队
  • 怎样学会单片机
  • 数据结构笔记--常见二叉树分类及判断实现
  • docker小白第二天
  • 【变形金刚03】使用 Pytorch 开始构建transformer
  • 「Web3大厂」价值70亿美元的核心竞争力
  • 前端发送请求和后端springboot接受参数
  • 程序一直在阿里云服务器运行
  • Linux 文件与目录管理
  • 【CSS】CSS 布局——弹性盒子
  • “华为杯”研究生数学建模竞赛2018年-【华为杯】B题:光传送网建模与价值评估(附优秀论文及matlab代码实现)
  • 群晖 nas 自建 ntfy 通知服务(梦寐以求)
  • Java基础练习九(方法)
  • Python-OpenCV中的图像处理-图像轮廓
  • @Cacheable缓存相关使用总结
  • c++ static