怎么连接两张表mysql
时间 : 2023-07-24 21:15:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在MySQL中,使用多种方法可以连接两张表。下面介绍两种常用的连接方式:内连接和外连接。

1. 内连接:

内连接返回两个表中满足连接条件的行。常见的内连接有三种方式:等值连接、不等值连接和自连接。

(1)等值连接(INNER JOIN):

等值连接是基于一个或多个相等条件将两张表中的记录进行匹配。

```sql

SELECT 列名

FROM 表1

INNER JOIN 表2

ON 表1.列名 = 表2.列名;

例如,有两张表Goods和Orders,它们的列分别为Goods_ID、Goods_Name和Order_ID、Order_Date。要查询商品名称和订购日期:

```sql

SELECT Goods_Name, Order_Date

FROM Goods

INNER JOIN Orders

ON Goods.Goods_ID = Orders.Goods_ID;

(2)不等值连接:

不等值连接是基于不相等的条件将两张表中的记录进行匹配。可以使用大于、小于、大于等于、小于等于等运算符来连接两个表。

```sql

SELECT 列名

FROM 表1

INNER JOIN 表2

ON 表1.列名 运算符 表2.列名;

例如,有两张表Goods和Orders,它们的列分别为Goods_ID、Goods_Name和Price、Goods_ID。要查询商品价格大于等于1000的商品的名称和价格:

```sql

SELECT Goods_Name, Price

FROM Goods

INNER JOIN Orders

ON Goods.Goods_ID = Orders.Goods_ID

WHERE Price >= 1000;

(3)自连接:

自连接是指连接同一张表的两个实例。需要使用别名来区分两个实例。

```sql

SELECT 列名

FROM 表 AS 别名1

INNER JOIN 表 AS 别名2

ON 别名1.列名 = 别名2.列名;

例如,有一张表Employee,它的列为Employee_ID、Employee_Name和Manager_ID。要查询员工及其所属经理的姓名:

```sql

SELECT e.Employee_Name, m.Employee_Name AS Manager_Name

FROM Employee AS e

INNER JOIN Employee AS m

ON e.Manager_ID = m.Employee_ID;

2. 外连接:

外连接返回两个表中满足连接条件的行以及没有匹配的行。常见的外连接有左外连接和右外连接。

(1)左外连接(LEFT JOIN):

左外连接返回左表中的所有行,以及满足连接条件的右表中的匹配行。如果右表中没有匹配的行,则用NULL填充。

```sql

SELECT 列名

FROM 表1

LEFT JOIN 表2

ON 表1.列名 = 表2.列名;

例如,有两张表Goods和Orders,它们的列分别为Goods_ID、Goods_Name和Order_ID、Order_Date。要查询所有商品及其订购日期,包括没有订购日期的商品:

```sql

SELECT Goods_Name, Order_Date

FROM Goods

LEFT JOIN Orders

ON Goods.Goods_ID = Orders.Goods_ID;

(2)右外连接(RIGHT JOIN):

右外连接返回右表中的所有行,以及满足连接条件的左表中的匹配行。如果左表中没有匹配的行,则用NULL填充。

```sql

SELECT 列名

FROM 表1

RIGHT JOIN 表2

ON 表1.列名 = 表2.列名;

例如,有两张表Goods和Orders,它们的列分别为Goods_ID、Goods_Name和Order_ID、Order_Date。要查询所有订购记录及其商品名称,包括没有商品名称的记录:

```sql

SELECT Goods_Name, Order_Date

FROM Goods

RIGHT JOIN Orders

ON Goods.Goods_ID = Orders.Goods_ID;

以上是连接两张表的常用方法,在实际应用中可以根据具体的情况选择合适的连接方式。