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

it2024-03-28  62

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 | +----+--------+------+
最新回复(0)