SQL中的联合操作(连表操作)

1、在一个SELECT语句中使用多个表

 用法:

SELECT * FROM TABLE_NAME1,TABLE_NAME2

在联合查询时必须要避免笛卡尔积,如:

在user_user表中有6条数据, 在name表中有5条记录。

 

 

 

 

如果将这两个表用SELECT语句联合查询

SELECT
*
FROM
`test`.`user_user`,
`test`.`name`;

结果会产生笛卡尔积,如下图,结果为30条记录

 

 

如果不想产生笛卡尔积,只需增加WHERE子句即可。

如:

SELECT
B.`name`,A.`password`
FROM
`test`.`user_user` A,
`test`.`name` B
WHERE
A.`username` = B.`name`

 

 

这种利用两个字段相等的查询叫等值联合,如果遇到两个表的字段名相同但是又想同时查询两表相同的字段时,需要给字段取别名。

 如:

 

 

有等值联合就有不等值联合,当WHERE子句中使用“=”以外的其他比较运算符连接时就叫不等值联合。

如下:

 

 

外联合

外联合是两个不同的表格进行连接,外联合分为左外联合,右外联合

左外联合如下:

 

 右外联合如下:

 

 

自联合

顾名思义,就是同一个表自我联合。

如:

 

 以上例子通过自联合查出了subname字段对应的上级

posted on 2022-12-16 21:24  坚持_学习  阅读(333)  评论(0编辑  收藏  举报