MySQL Union与Join

Union 和 Join 是SQL用于在关系数据库管理系统 (RDBMS) 中对多个表执行操作的子句。它们通过组合来自两个或多个表的数据来产生结果。但是,两个子句中组合来自两个或多个关系的数据的方式不同。在进行比较之前,我们将简要讨论这两个条件。

一、什么是Union条件

MySQL 联合子句允许我们使用多个 SELECT 查询将两个或多个关系组合到一个结果集中。默认情况下,它具有从结果集中删除重复行的功能。MySQL中的联合子句

必须遵守以下规则:
  • 所有表中列的顺序和数量必须相同。
  • 数据类型必须与每个选择查询的对应位置兼容。
  • SELECT 查询中的列名应该是相同的顺序。

Union语法

SELECT column_name(s) FROM table_name1    
UNION    
SELECT column_name(s) FROM table_name2;  

 二、什么是Join条件

MySQL中的 Join 与SELECT 语句一起用于从多个表中检索数据。每当我们需要从多个表中获取记录时都会执行此操作。它只返回表中符合指定条件的记录。

语法

SELECT column_name(s) FROM table_name1     
JOIN table_name2  ON conditions;  

三、Union 和 Join 对比

让我们使用下面的比较图表来讨论 Union 和Join之间的本质区别。

Union

Join

它用于使用 SQL 查询组合来自多个表的结果。 它用于使用 SQL 查询从多个表中获取记录。
它将记录组合​​成新行。 它将记录组合​​到新列中。
它允许我们垂直连接表格。 它将使我们能够垂直连接表格。
它作为汇总所有记录的多个表的结合。 它在表的交集处产生结果。
在这种情况下,所有表中的列的顺序和数量必须相同。 在此,列的顺序和数量不需要在所有表中都相同。
它具有从结果集中删除重复行的默认功能。 它不会从结果集中消除重复的行。
在这种情况下,所有 SELECT 语句中的数据类型必须相同。 在这种情况下,不需要相同的数据类型。它可以不同。
Union 子句仅适用于列数和相应属性具有相同域的情况。 只有当要使用​​的两个表至少有一列时,Join 子句才适用。
Union 子句主要有以下两种类型:
  • Union
  • Union All
Join 子句可以有不同的类型,如下所示:
  • Inner Join内连接
  • Left Join左连接(左外连接)
  • Right Join右连接(右外连接)
  • Fulll Join全联接(外部联接)

现在,我们将借助一个示例来理解它。

四、Union 示例

假设我们的数据库有以下表格:“Student1”和“Student2”,其中包含以下数据:

以下语句通过组合两个表生成包含所有学生姓名和科目的输出。

SELECT stud_name, subject FROM student1    
UNION    
SELECT stud_name, subject FROM student2;    

成功执行后,我们将获得包含所有唯一学生姓名和科目的输出:

五、Join 示例

假设我们的数据库有以下表格:“Students”和“Technologies”,其中包含以下数据:

我们可以使用以下查询从两个表中获取记录:

SELECT students.stud_fname, students.stud_lname, students.city, technologies.technology      
FROM students     
JOIN technologies      
ON students.student_id = technologies.tech_id;  

我们将得到以下输出:

热门文章

优秀文章