news 2026/3/24 13:52:09

MySQL 知识点复习- 6. inner/right/left join

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 知识点复习- 6. inner/right/left join

JOIN按照功能大致分为三类:

INNER JOIN(内连接):获取两个表中字段匹配关系的记录。

LEFT JOIN (左连接): 获取左表所有记录,即使右表没有匹配的记录。

RIGHT JOIN(右连接):用于 获取右表的所有记录,即使左表没有对应匹配的记录。

1. INNER JOIN:

语法:

SELECT column1, column2,....

FROM table1

INNER JOIN table2 on table1.column_name = table2.column_name;

1.简单的 INNER JOIN:

SELECT orders.order_id, customers.customer_name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;

2. 使用表别名:

SELECT o.order_id, c.customer_name FROM orders AS o INNER JOIN customers AS c ON o.customer_id = c.customer_id;

3. 多表 INNER JOIN:

SELECT orders.order_id, customers.customer_name, products.product_name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id INNER JOIN order_items ON orders.order_id = order_items.order_id INNER JOIN products ON order_items.product_id = products.product_id;

以上 SQL 语句涉及了 orders、customers、order_items 和 products 四个表的连接。它选择了订单 ID、客户名称和产品名称,连接了这些表的关联列。

4. 使用 WHERE 子句进行过滤:

SELECT orders.order_id, customers.customer_name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id WHERE orders.order_date >= '2023-01-01';

以上 SQL 语句在 INNER JOIN 后使用 WHERE 子句,过滤了订单日期在 '2023-01-01' 及以后的订单。

2. LEFT JOIN

LEFT JOIN 返回左表的所有行,并包括右表中匹配的行,如果右表中没有匹配的行,将返回 NULL 值,以下是 LEFT JOIN 语句的基本语法:

SELECT column1, column2, ... FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;

1. 简单的 LEFT JOIN:

SELECT customers.customer_id, customers.customer_name, orders.order_id FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id;

以上 SQL 语句将选择客户表中的客户 ID 和客户名称,并包括左表 customers 中的所有行。

3. RIGHT JOIN

RIGHT JOIN 返回右表的所有行,并包括左表中匹配的行,如果左表中没有匹配的行,将返回 NULL 值,以下是 RIGHT JOIN 语句的基本语法::

SELECT column1, column2, ... FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;

以下是一个简单的 RIGHT JOIN 实例:

SELECT customers.customer_id, orders.order_id FROM customers RIGHT JOIN orders ON customers.customer_id = orders.customer_id;

以上 SQL 语句将选择右表 orders 中的所有订单 ID,并包括左表 customers 中匹配的客户 ID。如果在 customers 表中没有匹配的客户 ID,相关列将显示为 NULL。

在开发过程中中,RIGHT JOIN 并不经常使用,因为它可以用 LEFT JOIN 和表的顺序交换来实现相同的效果。例如,上面的查询可以通过使用 LEFT JOIN 改写为:

SELECT customers.customer_id, orders.order_id FROM orders LEFT JOIN customers ON orders.customer_id = customers.customer_id;

以上 SQL 语句返回相同的结果,因为 LEFT JOIN 与 RIGHT JOIN 是对称的。在实际使用中,你可以根据个人偏好或组织规范选择使用哪种形式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 10:56:43

方言侦探笔记:用AI调音台解锁地道方言语音合成

你的AI语音为什么听起来总是"塑料感"十足?为什么同样的技术参数,在不同方言上效果天差地别?作为方言侦探,我将在本文中带你探索方言语音合成的密码,让你的AI真正"入乡随俗"。 【免费下载链接】Spa…

作者头像 李华
网站建设 2026/3/23 21:13:00

零基础玩转MixRamdisk:Windows简易教程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 制作一个面向新手的RAM磁盘配置向导应用,功能:1) 图形化界面选择磁盘大小(1-32GB);2) 一键迁移系统临时文件夹&#xff1…

作者头像 李华
网站建设 2026/3/24 8:35:50

杂牌对讲机万能写频软件完整使用指南:轻松搞定频率设置

杂牌对讲机万能写频软件完整使用指南:轻松搞定频率设置 【免费下载链接】杂牌对讲机万能写频软件及驱动程序 本仓库提供了一个名为“杂牌对讲机(万能)写频软件(含驱动程序等)支持宝锋_步迅_超艺等.rar”的资源文件下载。该文件包含了适用于多种杂牌对讲机的万能写频…

作者头像 李华
网站建设 2026/3/13 17:07:14

AI助力Kali安装:智能解决Linux配置难题

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个Kali Linux安装辅助工具,功能包括:1.自动检测硬件兼容性并推荐适配的Kali版本 2.根据磁盘空间智能生成分区方案 3.实时监控安装过程并自动修复常见错…

作者头像 李华
网站建设 2026/3/14 20:34:41

HybridCLR与AI结合:智能热更新解决方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个基于HybridCLR的热更新管理工具,集成AI能力实现以下功能:1. 自动分析代码变更,识别可能的热更新冲突点;2. 智能建议最优热更…

作者头像 李华
网站建设 2026/3/22 12:38:49

23、Linux常见问题及解决指南

Linux常见问题及解决指南 在使用Linux系统的过程中,我们难免会遇到各种各样的问题。本文将为大家介绍一些常见的Linux问题及相应的解决方法,同时还会分享一些获取Linux信息的途径。 一、获取Linux信息的途径 在解决具体问题之前,我们先了解一下可以从哪些地方获取更多关于…

作者头像 李华