mysql如何关联两个表

2023-12-12 19:00:08 举报文章

MySQL是一种关系型数据库管理系统,它支持多种连接两个表的方式。在这篇文章中,我们将主要介绍两种连接两个表的方式:内连接和外连接。

内连接:内连接又称等值连接,通过该方式可以连接两个表中具有相同值的行。以下是内连接的常用语法:

--by www.qzphp.cn
SELECT *
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
 

其中,table1和table2是需要连接的两个表的名称,column是这两个表中用于连接的列的名称。假设我们有以下两个表:

--by www.qzphp.cn
table1
+---------+-----------+
| user_id | username  |
+---------+-----------+
| 1  
   
  | Alice  
   |
| 2  
   
  | Bob  
   
  |
| 3  
   
  | Charlie  
 |
+---------+-----------+
table2
+---------+-----------+
| user_id | email  
   |
+---------+-----------+
| 1  
   
  | alice@xxx |
| 3  
   
  | charlie@x |
+---------+-----------+ 

我们希望连接两个表,并根据user_id列将它们匹配。以下是内连接的示例代码:

--by www.qzphp.cn
SELECT *
FROM table1
INNER JOIN table2
ON table1.user_id = table2.user_id;
 

该代码将返回以下结果:

--by www.qzphp.cn
+---------+-----------+-----------+
| user_id | username  | email  
   |
+---------+-----------+-----------+
| 1  
   
  | Alice  
   | alice@xxx |
| 3  
   
  | Charlie  
 | charlie@x |
+---------+-----------+-----------+ 

可以看到,只有user_id为1和3的行被匹配,因为只有它们同时出现在两个表中。

外连接:外连接用于连接两个表中不能一一匹配的行。MySQL支持左外连接和右外连接,分别用于选取左表和右表中不能匹配的行。以下是外连接的常用语法:

--by www.qzphp.cn
-- 左外连接
SELECT *
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;
-- 右外连接
SELECT *
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;
 

假设我们有以下两个表:

--by www.qzphp.cn
table1
+---------+-----------+
| user_id | username  |
+---------+-----------+
| 1  
   
  | Alice  
   |
| 2  
   
  | Bob  
   
  |
| 3  
   
  | Charlie  
 |
+---------+-----------+
table2
+---------+-----------+
| user_id | email  
   |
+---------+-----------+
| 1  
   
  | alice@xxx |
| 4  
   
  | david@xxx |
+---------+-----------+ 

我们希望用左外连接将这两个表连接起来。以下是示例代码:

--by www.qzphp.cn
SELECT *
FROM table1
LEFT JOIN table2
ON table1.user_id = table2.user_id;
 

该代码将返回以下结果:

--by www.qzphp.cn
+---------+-----------+-----------+
| user_id | username  | email  
   |
+---------+-----------+-----------+
| 1  
   
  | Alice  
   | alice@xxx |
| 2  
   
  | Bob  
   
  | NULL  
   
 |
| 3  
   
  | Charlie  
 | NULL  
   
 |
+---------+-----------+-----------+ 

可以看到,左表中所有的行都被包含在结果中。对于左表和右表匹配不上的行,MySQL返回NULL。

以上就是关于MySQL如何连接两个表的简单介绍。希望对大家有所帮助。

如果你认为本文可读性较差,内容错误,或者文章排版错乱,请点击举报文章按钮,我们会立即处理!