三表左连接查询的sql语句写法

三表左连接查询是SQL语句中常见的一种查询方式。它可以在多张表中查找符合条件的结果,并将多张表的数据以特定的关联方式进行合并,以得到更为完整的信息。

下面介绍三表左连接查询的SQL语句写法和实例:

SQL语句写法:

SELECT A.*, B.*, C.*
FROM table_A A
LEFT JOIN table_B B ON A.id = B.a_id
LEFT JOIN table_C C ON B.id = C.b_id

该语句中,table_Atable_Btable_C 是要查询的三个表,A、B、C 是表的别名,A.idB.a_idC.b_id 是表之间的关联字段。* 表示查询出每个表中所有的字段。

这里的 LEFT JOIN 在连接两个表时,左边的表(table_A)都会显示出来,右边的表(table_Btable_C)匹配不上的将显示为 NULL。

示例一:

假设有三张表,分别是学生表(student)、学校表(school)和课程表(course)。学生表中包含学生的ID、姓名、学校ID,学校表中包含学校的ID和名称,课程表中包含课程的ID、名称和学校ID。现在需要查询出每个学生所在学校及该学校所开设的课程。

表结构如下:

  • 学生表(student
  • id
  • name
  • school_id
  • 学校表(school
  • id
  • name
  • 课程表(course
  • id
  • name
  • school_id

查询语句如下:

SELECT s.id AS student_id, s.name AS student_name, sc.id AS school_id, sc.name AS school_name, c.id AS course_id, c.name AS course_name
FROM student s
LEFT JOIN school sc ON s.school_id = sc.id
LEFT JOIN course c ON c.school_id = sc.id

以上查询语句会返回每个学生所在学校及该学校所开设的课程。

示例二:

假设有三张表,分别是订单表(order)、商品表(product)和类别表(category)。订单表中包含订单的ID、商品ID和数量,商品表中包含商品的ID、名称和类别ID,类别表中包含类别的ID和名称。现在需要查询每个订单所包含的商品及每个商品所属的类别。

表结构如下:

  • 订单表(order
  • id
  • product_id
  • quantity
  • 商品表(product
  • id
  • name
  • category_id
  • 类别表(category
  • id
  • name

查询语句如下:

SELECT o.id AS order_id, o.quantity, p.id AS product_id, p.name AS product_name, c.id AS category_id, c.name AS category_name
FROM order o
LEFT JOIN product p ON o.product_id = p.id
LEFT JOIN category c ON p.category_id = c.id

以上查询语句会返回每个订单所包含的商品及每个商品所属的类别。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:三表左连接查询的sql语句写法 - Python技术站

(1)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • Zabbix监控方案-官方最新4.4版本【推荐】

    Zabbix监控方案-官方最新4.4版本【推荐】 概述 Zabbix是一款高度可配置的企业级开源网络监控系统,能够提供实时监控、报警、可视化等功能。本文将详细介绍如何搭建Zabbix监控方案,让您更好的使用和了解该系统。 准备工作 在开始搭建Zabbix监控方案之前,需要满足以下条件: 已安装CentOS 7操作系统; 已安装MySQL数据库; 已安装Apa…

    database 2023年5月21日
    00
  • mybatis中oracle实现分页效果实例代码

    下面是详细讲解“mybatis中oracle实现分页效果实例代码”的完整攻略: 一、前置条件 要实现Mybatis中Oracle的分页效果,需要首先满足以下前置条件: 1. 使用Mybatis Mybatis是一个优秀的Java持久层框架,如果你还不熟悉Mybatis的基本使用和配置,请先完成相关的学习。 2. 使用Oracle数据库 Oracle是一种强大…

    database 2023年5月21日
    00
  • MySQL 出现 The table is full 的解决方法【转】

    时间 2014-08-21 12:18:56  MySQL中文网 原文  http://imysql.com/2014/08/21/mysql-faq-howto-deal-with-table-full.shtml 主题 MySQL 当我们要写入新数据而发生“The table is full”告警错误时,先不要着急,按照下面的思路来逐步分析即可: 1、查…

    MySQL 2023年4月13日
    00
  • mysql用户变量与set语句示例详解

    关于“mysql用户变量与set语句示例详解”,我会给你详细讲解一下。 什么是MySQL用户变量 MySQL用户变量是指在MySQL连接期间创建的变量,其生命周期与连接相关。用户变量可以存储字符串、数值和二进制数据等类型的值,而设置它们的语法为: @var_name := value。 其中,@符号为用户变量的前缀,var_name为变量名,value为变量…

    database 2023年5月21日
    00
  • golang1.16新特性速览(推荐)

    Golang1.16新特性速览(推荐)攻略 Golang1.16版本推出了许多全新的特性,本文将为你详细介绍各项新特性及其使用方法。 Embeddings 新版本中,可以使用Embeddings机制来将一个结构体嵌套到另一个结构体中,同时在使用过程中可以直接访问这两个结构体的方法和属性。下面是一个简单的示例: type Person struct { Nam…

    database 2023年5月22日
    00
  • Navicat Premium连接到Centos服务器上的Mysql

    1.如何通过本地连接到云服务器上的数据库? 我的配置如下: 客户端:Navicat Premium    服务器:阿里云ECS服务器中的Centos7.6系统 2.配置云服务器上的端口,也就是我们要在服务器那里打开我们要访问的端口,让外部可以访问才能连接上我们的数据库,数据库的端口默认是3306,配置步骤如下: 一、在阿里云服务器ECS控制台的安全组- -&…

    MySQL 2023年4月12日
    00
  • Linux系统中在虚拟机上搭建DB2 pureScale的方法

    下面是详细讲解在Linux系统下如何在虚拟机上搭建DB2 pureScale的方法: 准备工作 虚拟机及操作系统的安装 首先,我们需要安装一个虚拟机来搭建DB2 pureScale系统,可以使用 Oracle VirtualBox 等虚拟机软件。接着,需要在虚拟机上安装 Linux 操作系统。 下载及安装 DB2 pureScale 软件 从 IBM 官网下…

    database 2023年5月22日
    00
  • MySQL 中的锁有哪些类型,MySQL 中加锁的原则

    MySQL 中的锁理解 锁的类型 全局锁 缺点 适用范围 表级锁 表锁 元数据锁 意向锁 自增锁 行锁 Record Lock Gap Lock Next-Key Lock 插入意向锁 加锁的原则 1、主键等值查询 2、非唯一索引等值查询 3、主键索引范围锁 4、非唯一索引范围查询 5、非唯一索引等值查询 6、limit 语句加锁 总结 参考 MySQL 中…

    MySQL 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部