我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql中怎么实现多表连接查询

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql中怎么实现多表连接查询

这篇文章将为大家详细讲解有关mysql中怎么实现多表连接查询,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

代码如下:

SELECT FId
FROM T_Customer
WHERE FName='MIKE'

这个SQL语句返回2,也就是姓名为MIKE 的客户的FId值为2,这样就可以到T_Order中检索FCustomerId等于2 的记录:

代码如下:

SELECT FNumber,FPrice
FROM T_Order
WHERE FCustomerId=2

下面我们详细来看看表连接。表连接有多种不同的类型,有交叉连接(CROSS JOIN)、内连接(INNER JOIN)、外连接(OUTTER JOIN)。

(1)内连接(INNER JOIN):内连接组合两张表,并且只获取满足两表连接条件的数据。

代码如下:

SELECT o.FId,o.FNumber,o.FPrice,
c.FId,c.FName,c .FAge
FROM T_Order o JOIN T_Customer c
ON o.FCustomerId= c.FId

注:在大多数数据库系统中,INNER JOIN中的INNER是可选的,INNER JOIN 是默认的连接方式。

在使用表连接的时候可以不局限于只连接两张表,因为有很多情况下需要联系许多表。例如,T_Order表同时还需要连接T_Customer和T_OrderType两张表才能检索到所需要的信息,编写如下SQL语句即可:

代码如下:

SELECT o.FId,o.FNumber,o.FPrice,
c.FId,c.FName,c .FAge
FROM T_Order o JOIN T_Customer c
ON o.FCustomerId= c.FId
INNER JOIN T_OrderType
ON T_Order.FTypeId= T_OrderType.FId

(2)交叉连接(CROSS JOIN):交叉连接所有涉及的表中的所有记录都包含在结果集中。可以采用两种方式来定义交叉连接,分别是隐式和显式的连接。

下面看看隐式的例子:

代码如下:

SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge,
T_Order.FId, T_Order.FNumber, T_Order.FPrice
FROM T_Customer, T_Order

使用显式的连接则需要使用CROSS JOIN,例子如下:

代码如下:

SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge,
T_Order.FId, T_Order.FNumber, T_Order.FPrice
FROM T_Customer
CROSS JOIN T_Order

(3)外连接(OUTTER JOIN):内部连接只获取满足连接条件的数据,而对于外部连接来说,主要是解决这样的一种场景。满足条件的数据检索出来,这个没有疑问,外部连接还会检索另一部分数据,那就是将不满足条件的数据以NULL来填充。先来看一下外连接的分类:左外部连接(LEFT OUTER JOIN)、右外部连接(RIGHT OUTER JOIN)和全外部连接(FULLOUTER JOIN)。

I、左外部连接(LEFT OUTER JOIN):前头也说了,将不满足条件的数据以NULL来填充。那么具体是哪些需要以NULL来填充呢,对于左外连接来说的话,连接条件当中,如果出现满足条件的左表的数据在右表中没有相应匹配时,需要把相应的右表字段填充NULL值。也就是说左外部连接的主体是左表,右表来配合。

代码如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

注:如果使用左外部连接的话,通过where语句能过滤其中不符合的数据

代码如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId
WHERE o.FPrice>=150

II、右外部连接(RIGHT OUTER JOIN):右外部连接与左外连部接相反,将会被填充NULL值的是左表的字段。也就是说右外部连接的主体是右表,左表来配合。

代码如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
RIGHT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

注:同左外连接一样,可以使用where语句进行过滤

III、全外部连接(FULLOUTER JOIN):全外部连接是左外部连接和右外部连接的合集。也就是既包括左外部连接的结果集,也包括右外部连接的结果集。

代码如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
FULL OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

其结果相当于:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId
UNION
SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
RIGHT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

多表查询的多种sql写法:(下面是从两个表里查询<也可以看成从三个表里查询>,显示表v_goods里的所有字段,显示admin2表里的name字段作为添加人,显示表admin2表的name字段作为操作人) 多个表的查询都可按照下面三个例句进行编写sql

SELECT v.*,(SELECT a.name FROM admin2 a WHERE a.adminId=v.loadInId) AS aname,(SELECT a.name FROM admin2 a WHERE a.adminId=v.operatorId) AS uname FROM v_goods v where 1=1;
SELECT v.*,a.name aname,b.name uname FROM v_goods v,admin2 a,admin2 b WHERE a.adminId=v.loadInId AND b.adminId=v.operatorId ;
SELECT v.*,a.name aname,b.name uname FROM v_goods v LEFT JOIN admin2 a ON a.adminId=v.loadInId LEFT JOIN admin2 b ON b.adminId=v.operatorId ;

关于mysql中怎么实现多表连接查询就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql中怎么实现多表连接查询

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mariadb怎么实现多表连接查询

这篇文章主要介绍“Mariadb怎么实现多表连接查询”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mariadb怎么实现多表连接查询”文章能帮助大家解决问题。概念因为我们使用的是关系型数据库,每张表
2023-06-27

连接查询(多表查询)——MySQL

连接查询(多表查询) 又称多表查询,当查询的字段涉及多个表的时候,就要用到连接查询 分类: 为表起别名: 提高语句的简洁度区分多个重名字段注意:如果为表起了别名,则查询的字段就不能使用原来的别名去限定 内连接 查询A、B 交集部分数据 语
2023-08-18

怎么在MySQL中实现连接查询

本篇文章给大家分享的是有关怎么在MySQL中实现连接查询,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.内连接查询概要 内连接是应用程序中非常常见的连接操作,它一
2023-06-15

mysql怎么实现多表查询

这篇文章给大家分享的是有关mysql怎么实现多表查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、说明查询其实就是对于对于各个表格进行递归调用,和矩阵的乘法一样一样的,这个对应非常直观,也非常通用。常规的查询
2023-06-15

MySQL数据库查询中怎么实现多表查询

今天小编给大家分享一下MySQL数据库查询中怎么实现多表查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、多表查询多表查
2023-06-29

MySQL数据库:多表连接查询

多表连接查询注意:使用连接技术建议将表经行重命名!# explain 检索连接是否达标# 内连接 # 语法1from 表1 inner join 表2 on 主键字段=外键字段 [where 条件表达式] # 语法2 from 表1,表2 where 主键字段
2022-01-30

Linq中怎么实现连接查询

今天就跟大家聊聊有关Linq中怎么实现连接查询,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Linq连接查询之前先建立两个查询:using (DataClassesDataConte
2023-06-17

MySQL之多表查询自连接方式

目录一、引言二、实操总结一、引言自连接,顾名思义就是自己连接自己。自连接的语法结构:表 A 别名 A join 表 A 别名 B ON 条件 ...;注意:1、这种语法有一个关键字:join2、自连接查询可以是内连接的语法,可以是外
MySQL之多表查询自连接方式
2024-09-05

linq中怎么实现多表查询

这篇文章给大家介绍linq中怎么实现多表查询,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1:1关系的多表操作表结构如上首先是测试取全记录的情况(也就是取所有字段)linq多表查询之直接写表达式var user = c
2023-06-17

mysql查询结果怎么实现多列拼接查询

这篇文章主要介绍“mysql查询结果怎么实现多列拼接查询”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql查询结果怎么实现多列拼接查询”文章能帮助大家解决问题。之前遇到过一个问题,mysql数
2023-06-29

编程热搜

目录