Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql union和join

MySQL中UNION 和 JOIN 多表联合查询方式

作者:码农研究僧

本文介绍了在MySQL中UNION和JOIN两种多表查询的方式,包括它们的适用场景、语法和特性,JOIN用于关联数据,而UNION用于合并具有相同结构但无直接关系的数据,感兴趣的朋友跟随小编一起看看吧

前言

在 MySQL 中,UNION 和 JOIN 是多表查询的两种主要方式。它们有不同的适用场景和语法

两者的差异如下:

特性JOINUNION
数据组合横向组合,合并两表数据到一个行内纵向组合,合并两表数据到多个行
数据结构要求表间需有关联条件,如外键等列数和数据类型需一致
结果数据量结果记录数量通常小于表数据量结果记录数量可能增加
常用场景数据关联,如订单与用户信息查询数据汇总,如多表的类似记录组合

具体的使用选择:

当需要将两表数据按照某种逻辑相关联时,选择 JOIN

当需要合并多表中具有相同结构但无直接关系的数据时,选择 UNION

1. JOIN

JOIN 用于在多个表之间按一定条件关联数据

JOIN 查询通过指定的条件(如外键关系)将表横向组合

SELECT column_names
FROM table1
[INNER|LEFT|RIGHT] JOIN table2
ON table1.column_name = table2.column_name
WHERE conditions;

基本的类型有如下:

JOIN 类型

只返回两个表中满足 ON 条件的记录
若某条记录在任一表中没有匹配项,则不会包含在结果中
常用于提取相关数据

返回左表中的所有记录,以及右表中与左表记录匹配的记录
如果右表中没有匹配项,则结果中该记录右表的字段为 NULL
常用于查找左表中的数据即使右表没有匹配项时

返回右表中的所有记录,以及左表中与右表记录匹配的记录
如果左表中没有匹配项,则结果中该记录左表的字段为 NULL
不如 LEFT JOIN 常用

返回两个表中所有记录,不论是否有匹配项
不支持时用以下替代:

SELECT ...
FROM table1
LEFT JOIN table2 ON condition
UNION
SELECT ...
FROM table1
RIGHT JOIN table2 ON condition;

2. UNION

UNION 用于将两个或多个查询结果纵向组合为一个结果集。它对查询的列数和数据类型有要求

基本的语法如下:

SELECT column_names
FROM table1
WHERE conditions
UNION [ALL]
SELECT column_names
FROM table2
WHERE conditions;

注意事项有如下:

UNION 会去掉结果集中重复的记录
若需要保留所有重复记录,使用 UNION ALL

所有参与查询的 SELECT 语句必须有相同的列数
每列的数据类型必须兼容

可以通过在 UNION 之后的结果集中加 ORDER BY 对整体结果排序

到此这篇关于MySQL中UNION 和 JOIN 多表联合查询方式的文章就介绍到这了,更多相关mysql union和join内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文