首页 > 数据库 >SQL多表联合查询用法介绍

SQL多表联合查询用法介绍

时间:2023-10-29 21:02:37浏览次数:41  
标签:JOIN name sales 用法 user SQL 多表 查询 SELECT

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

标签:JOIN,name,sales,用法,user,SQL,多表,查询,SELECT
From: https://www.cnblogs.com/sunny3158/p/17796450.html

相关文章

  • SQL连表查询
    SQL连表查询 1内连接(INNERJOIN)   使用比较运算符(包括=、>、<、<>、>=、<=、!>和!<)进行表间的比较操作,查询与连接条件相匹配的数据。根据比较运算符不同,内连接分为等值连接和不等连接两种。123select * from [dbo].[class],student  where [class].id=s......
  • SQL Server数据库连接字符串的几种写法整理
     SQLServer数据库连接字符串的几种写法整理一、远程连接SQLServer数据库1.sqlserver身份验证连接字符串:privatestringConnstrSqlServer="server=数据库地址及实例;uid=数据库账号;pwd=数据库密码;database=数据库名";2.windows身份验证连接字符串:privatestr......
  • centos7安装mysql5.7(转)
    https://cloud.tencent.com/developer/article/2226207安装步骤https://www.cnblogs.com/key-l731/p/9551400.html查看本机安装情况  1.下载MySQLyum包wgethttp://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm复制2.安装MySQL源rpm-Uvhmysql5......
  • MYSQL内外连接查询实践
    自身连接查询自身连接,就是将表本身和表进行笛卡尔积计算,得到结果,但是由于表名相同,因此要先起一个别名:SELECT*FROM表名别名1,表名别名2自身连接查询的连接对象变成自己和自己了。例如1:student表自身连接查询#自身连接查询,笛卡尔积:81条数据select*fromstudent......
  • SQL Server 存储过程的应用及 LabVIEW 调用
    存储过程应用及LabVIEW调用1、存储过程就是一条或多条SQL语句的集合,可以称之为批处理文件; 2、部分优点:a、加快运行速度;b、可封装复杂操作;c、实现模块化程序设计,统一数据库访问接口,提高可维护性;d、增加代码安全性; 3、部分缺点:a、不同数据库语法......
  • Python使用pymysql和xlrd2将Excel数据导入MySQL数据库
    在数据处理和管理中,有时候需要将Excel文件中的数据导入到MySQL数据库中进行进一步的分析和操作。本文将介绍如何使用Python编程语言实现这个过程。导入所需库importxlrd2#导入xlrd2库,用于读取Excel文件importpymysql#导入pymysql库,用于连接和操作MySQL数据库fromdat......
  • 列表包裹元组,指定元组中数字大小排序字段operator用法
    importoperatorsomelist=[(1,5,8),(6,2,4),(9,7,5)]somelist.sort(key=operator.itemgetter(0))print(somelist)#[(1,5,8),(6,2,4),(9,7,5)]somelist.sort(key=operator.itemgetter(1))print(somelist)#[(6,2,4),(1,5,8),(9,7,5)]somelist.sor......
  • Pandas数据导入和导出:CSV、Excel、MySQL、JSON
    导入MySQL查询结果:read_sqlimportpandascon="mysql+pymysql://user:[email protected]/test"sql="SELECT*FROM`student`WHEREid=2"#sql查询df1=pandas.read_sql(sql=sql,con=con)print(df1)导入MySQL整张表:read_sql_table#整张表df2=pandas.rea......
  • 万字长文 | 业内 MySQL 线程池主流方案详解 - MariaDB/Percona/AliSQL/TXSQL/MySQL企
    作者:卢文双资深数据库内核研发本文首发于2023-05-0422:07:40http://dbkernel.com/2023/05/04/mysql-threadpool-main-solutions-details/#本文主要从功能层面对比percona-server、mariadb、阿里云AliSQL、腾讯TXSQL、MySQL企业版线程池方案,都基于MySQL8.0。至于源......
  • Mybatis sql日志在线转换工具
     Mybatissql日志在线转换工具 有时候在linux服务器上复制出来的SQL,带问号,不好转化成正常的SQL,网上搜了一下也没发现有在线的转换工具,刚好自己有个轻语音乐网站,有域名和服务器,所以想着把这个页面集成上去,也方便自己日常使用。 Mybatissql日志在线转换工具地址:http://linl......