MySQL之两个表联合查询

本文介绍如何在SQL中通过联合查询从不同表中获取信息,并利用公共字段实现数据整合。此外,还介绍了如何使用CREATE TABLE语句将查询结果保存为新表。

在数据库中,有时我们需要的信息可能不在同一个表中,而根据两个表中的公共字段,我们就可以从中获取我们需要的信息。

注意:联合查询必须有公共字段

SQL语句示例:

SELECT * FROM table1,table2 WHERE table1.name=table2.name

 

如果我们想将查询结果生成新表,使用CREATE TABELE语句

SQL:

CEEATE TABLE table3 SELECT * FROME table1,table2 WHERE table1.name=table2.name

 

MySQL两个数据库关联查询的方法有多种,具体如下: 1. **INNER JOIN(内连接)**:只返回两个中匹配的行。执行过程通常先计算两个的笛卡尔积,即将第一个的每一行与第二个的每一行组合,然后在生成的笛卡尔积上应用JOIN条件,只保留符合条件的行,最后根据SELECT语句中指定的列来过滤和返回结果。示例代码如下: ```sql SELECT s.num, s.name, m.name FROM student s INNER JOIN major m ON s.majorid = m.id; ``` 2. **LEFT JOIN(左连接)**:返回左中的所有行,即使在右中没有匹配。示例代码如下: ```sql SELECT s.num, s.name, m.name FROM student s LEFT JOIN major m ON s.majorid = m.id; ``` 3. **RIGHT JOIN(右连接)**:返回右中的所有行,即使在左中没有匹配。示例代码如下: ```sql SELECT s.num, s.name, m.name FROM student s RIGHT JOIN major m ON s.majorid = m.id; ``` 4. **FULL OUTER JOIN(全外连接)**:返回两个中的所有行,无论它们是否匹配。不过MySQL本身不直接支持FULL OUTER JOIN,但可以通过UNION操作来模拟,示例代码如下: ```sql SELECT s.num, s.name, m.name FROM student s LEFT JOIN major m ON s.majorid = m.id UNION SELECT s.num, s.name, m.name FROM student s RIGHT JOIN major m ON s.majorid = m.id; ``` 5. **CROSS JOIN(交叉连接)**:会返回两个的笛卡尔积,即第一个的每一行与第二个的每一行组合。示例代码如下: ```sql SELECT s.num, s.name, m.name FROM student s CROSS JOIN major m; ``` 6. **自连接(Self Join)**:当一个需要与自身进行关联查询时使用。示例代码如下: ```sql SELECT e1.name, e2.name FROM employees e1 JOIN employees e2 ON e1.manager_id = e2.id; ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值