程序员社区

MySQL系列教程 --- 72、MySQL 中的 内连接

MySQL 内部联接用于仅返回匹配指定条件的表中的那些结果并隐藏其他行和列。MySQL 假定它是默认的 Join,因此在查询中使用 Inner Join 关键字是可选的。

我们可以通过以下可视化表示来理解它,其中 Inner Joins 仅返回来自 table1 和 table2 的匹配结果:

file

MySQL 内部连接语法:

Inner Join 关键字与SELECT 语句一起使用,并且必须写在 FROM 子句之后。以下语法更清楚地解释了它:

SELECT columns  
FROM table1  
INNER JOIN table2 ON condition1  
INNER JOIN table3 ON condition2  
...;  

在这个语法中,我们首先要选择列列表,然后指定将连接到主表的表名,出现在 Inner Join(table1, table2) 中,最后在 ON 关键字后提供条件。联接条件返回在内部子句中指定的表之间的匹配行。

MySQL 内连接示例

让我们首先创建两个包含以下数据的表“students”和“technologies”:

Table: student

file

Table: technologies

file

要从两个表中选择记录,请执行以下查询:

SELECT students.stud_fname, students.stud_lname, students.city, technologies.technology    
FROM students   
INNER JOIN technologies    
ON students.student_id = technologies.tech_id;  

成功执行查询后,它将给出以下输出:

file

MySQL Inner Join with Group By Clause

Inner Join 也可以与 GROUP BY 子句一起使用。以下语句使用带有 GROUP BY 子句的 Inner Join 子句返回学生 ID、技术名称、城市和学院名称。

SELECT students.student_id, technologies.inst_name, students.city, technologies.technology    
FROM students   
INNER JOIN technologies    
ON students.student_id = technologies.tech_id GROUP BY inst_name;  

上面的语句将给出以下输出:

MySQL 内连接

带有 USING 子句的 MySQL 内部连接

有时,两个表中的列名称相同。在这种情况下,我们可以使用 USING 关键字来访问记录。以下查询更清楚地解释了它:

SELECT student_id, inst_name, city, technology    
FROM students   
INNER JOIN technologies    
USING (student_id);  

它将给出以下输出:

file

使用 WHERE 子句进行内部连接

WHERE 子句使您能够返回过滤结果。以下示例使用内部联接说明了此子句:

SELECT tech_id, inst_name, city, technology    
FROM students   
INNER JOIN technologies    
USING (student_id) WHERE technology = "Java"; 

该语句给出了以下结果:

file

MySQL 内连接多表

我们已经创建了两个名为Studentstechnologies 的表。让我们再创建一个表并将其命名为联系人。

file

执行以下语句加入三表学生、技术和联系人:

SELECT student_id, inst_name, city, technology, cellphone  
FROM students   
INNER JOIN technologies USING (student_id)  
INNER JOIN contact ORDER BY student_id;  

成功执行上述查询后,它将给出以下输出:

file

使用运算符的 MySQL 内连接

MySQL允许有很多可以和Inner Join一起使用的运算符,比如大于(>)、小于(<)、等于(=)、不等于(=)等。下面的查询返回收入在20000 到 80000 的范围:

SELECT emp_id, designation, income, qualification  
FROM employee  
INNER JOIN customer  
 WHERE income>20000 and  income<80000;  

这将提供以下输出:

file

赞(0) 打赏
未经允许不得转载:IDEA激活码 » MySQL系列教程 --- 72、MySQL 中的 内连接

一个分享Java & Python知识的社区