Mysql join(连接查询) 与 union(联合查询) 的区别

  • join(连接查询):是将两个查询(或表)的每一行,以“两两横同对接”的方式,
    所得到的所有行的结果,即一个表中的某行,跟另一个表中的某行。
    进行“横向对接”,得到一个新行。

  • union (联合查询):指将2个或2个以上的字段数量相同的查询结果,“纵向堆叠”后合并为一个结果。

  • 测试数据

mysql> select * from test;
+----+--------+------+------+
| id | name   | sex  | age  |
+----+--------+------+------+
|  1 | name1  | 女   |   15 |
|  2 | name1  | 女   |   15 |
|  4 | name2  | 男   |   30 |
|  5 | name50 | 男   |   12 |
+----+--------+------+------+

mysql> select * from user;
+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | name1 |   18 |
|  2 | name2 |   15 |
|  3 | name3 |   20 |
|  4 | name4 |   30 |
+----+-------+------+
  • 查询数据的结果区别:

    join(连接查询):横向拼接查询结果的数据。

    mysql> select * from test left join user on test.name=user.name;
    +----+--------+------+------+------+-------+------+
    | id | name   | sex  | age  | id   | name  | age  |
    +----+--------+------+------+------+-------+------+
    |  1 | name1  | 女   |   15 |    1 | name1 |   18 |
    |  2 | name1  | 女   |   15 |    1 | name1 |   18 |
    |  4 | name2  | 男   |   30 |    2 | name2 |   15 |
    |  5 | name50 | 男   |   12 | NULL | NULL  | NULL |
    +----+--------+------+------+------+-------+------+
    

    union (联合查询):纵向拼接查询结果的数据。

    mysql> select id, name, age from test union select id, name, age from user;
    +----+--------+------+
    | id | name   | age  |
    +----+--------+------+
    |  1 | name1  |   15 |
    |  2 | name1  |   15 |
    |  4 | name2  |   30 |
    |  5 | name50 |   12 |
    |  1 | name1  |   18 |
    |  2 | name2  |   15 |
    |  3 | name3  |   20 |
    |  4 | name4  |   30 |
    +----+--------+------+
    

你可能感兴趣的:(Mysql,mysql,sql,数据库)