sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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 2023-10-29 20:50  sunny123456  阅读(956)  评论(0编辑  收藏  举报