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 子句主要有以下两种类型:
|
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;
我们将得到以下输出:
热门文章
优秀文章