sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

SQL多表联合查询用法介绍

一、联合查询基本概念

联合查询,又称为多表查询,是指针对两个或多个表进行查询,并将结果集合并起来展示的过程。在实际应用中,联合查询是很常见的查询方式,因为单张表无法满足复杂的查询需求。

二、联合查询的语法

联合查询的语法格式如下:

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

在该语法中,UNION表示将多个SELECT查询的结果集合并在一起,其中,每个SELECT查询都可以指定不同的条件、不同的表、不同的列。

三、联合查询中的JOIN操作

在联合查询中,JOIN操作用于连接两个或多个表。JOIN操作需要指定两个表之间的关联条件,关联条件一般是两个表中的某一列。

在JOIN操作中,常用的JOIN类型有以下几种:

1. INNER JOIN

INNER JOIN,也称为等值连接或内连接,是指将两个表中满足关联条件的行返回,其语法格式如下:

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

2. LEFT JOIN

LEFT JOIN,也称为左连接,是指将左表中所有的行和右表中满足关联条件的行返回,其语法格式如下:

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

3. RIGHT JOIN

RIGHT JOIN,也称为右连接,是指将右表中所有的行和左表中满足关联条件的行返回,其语法格式如下:

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

四、联合查询中的UNION操作

在联合查询中,UNION操作用于将多个SELECT查询的结果集合并在一起。需要注意的是,UNION操作要求每个SELECT查询中返回的列的数量和数据类型必须相同。

在UNION操作中,有一种特殊的写法,即使用UNION ALL操作,其特点是将所有查询的结果集合并在一起,不去重。其语法格式如下:

SELECT 
  column1, 
  column2, 
  ... 
FROM 
  table1 
UNION ALL
SELECT 
  column1, 
  column2, 
  ... 
FROM 
  table2;

五、联合查询实例

1. INNER JOIN联合查询实例

假设我们有两张表,一张是用户表user,另一张是订单表order,它们之间有一个共同的列user_id,我们想要查询用户的订单信息,可以使用INNER JOIN联合查询,查询语句如下:

SELECT 
  user.user_id, 
  user.name, 
  order.order_id, 
  order.amount 
FROM 
  user 
INNER JOIN 
  order 
ON 
  user.user_id = order.user_id;

2. LEFT JOIN联合查询实例

继续以上述的用户表user和订单表order为例,我们想要查询所有用户的订单信息,包括没有订单的用户,可以使用LEFT JOIN联合查询,查询语句如下:

SELECT 
  user.user_id, 
  user.name, 
  order.order_id, 
  order.amount 
FROM 
  user 
LEFT JOIN 
  order 
ON 
  user.user_id = order.user_id;

3. UNION ALL操作实例

假设我们有三张表,一张是北京地区的销售表sales_bj,另一张是上海地区的销售表sales_sh,还有一张是全国总销售表sales_all,我们想要查询北京和上海地区销售额大于5000的记录,以及全国总销售额大于10000的记录,可以使用UNION ALL操作,查询语句如下:

SELECT 
  'beijing' AS area, 
  sales_bj.sale_id, 
  sales_bj.amount 
FROM 
  sales_bj 
WHERE 
  sales_bj.amount > 5000 
UNION ALL 
SELECT 
  'shanghai' AS area, 
  sales_sh.sale_id, 
  sales_sh.amount 
FROM 
  sales_sh 
WHERE 
  sales_sh.amount > 5000 
UNION ALL 
SELECT 
  'global' AS area, 
  sales_all.sale_id, 
  sales_all.amount 
FROM 
  sales_all 
WHERE 
  sales_all.amount > 10000;
原文链接:https://www.python100.com/html/LK506YD9T90S.html
posted on   sunny123456  阅读(2649)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示