• 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 |
    +----+--------+------+
    
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐