MySQL - Self Join

MySQL - Self Join 首页 / MySQL入门教程 / MySQL - Self Join

SELF JOIN是用于与自身(itself)联接表的联接。在前面的部分中,无涯教程学习了使用不同的JOINS(例如INNER,LEFT,RIGHT和CROSS JOIN)将表与其他表连接起来的方法。但是,需要将数据与同一表本身中的其他数据合并。在这种情况下,将使用"Self Join"。

假设无涯教程有一个名为" student" 的表,该表将在单个查询中使用两次。为了给student学生表起别名,可以这样写:

Select  FROM student AS S1 
INNER JOIN student AS S2;

SELF JOIN语法

自联接的语法与联接两个不同表的语法相同。在这里,无涯教程为表使用别名,因为两个表名称相同。以下是MySQL中SELF JOIN的语法:

SELECT s1.col_name, s2.col_name...
FROM table1 s1, table1 s2
WHERE s1.common_col_name = s2.common_col_name;

SELF JOIN 示例

让无涯教程在包含以下数据的数据库中创建表"student" :

MySQL SELF Join

现在,将从 student_id 相等且 course_id 不相等的表中获取所有结果(student_id和name)。执行以下查询以了解MySQL中self联接的工作:

SELECT  s1.student_id, s1.name
FROM student AS s1, student s2
WHERE s1.student_id=s2.student_id
AND s1.course_ids2.course_id;

成功执行后,无涯教程将获得以下输出:

MySQL SELF Join

使用INNER JOIN进行SELF JOIN

以下示例说明了如何将内部联接与自联接一起使用。当两个表的student_id相等,而course_id不相等时,此查询返回学生id和名称。

SELECT  s1.student_id, s1.name
FROM student s1
INNER JOIN student s2
ON s1.student_id=s2.student_id
AND s1.course_ids2.course_id
GROUP BY student_id;

执行完上面的语句后,将得到以下示例:

MySQL SELF Join

使用LEFT JOIN进行SELF JOIN

以下示例说明了如何将LEFT Join与Self Join结合使用。当两个表的student_id相等时,该查询将返回学生名称为 monitor 和city。

SELECT (CONCAT(s1.stud_lname, ' ', s2.stud_fname)) AS 'Monitor', s1.city
FROM students s1
LEFT JOIN students s2 ON s1.student_id=s2.student_id
ORDER BY s1.city DESC;

执行完上面的语句后,无涯教程将得到以下示例:

MySQL SELF Join

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

技术领导力实战笔记 -〔TGO鲲鹏会〕

玩转webpack -〔程柳锋〕

TypeScript开发实战 -〔梁宵〕

Kafka核心源码解读 -〔胡夕〕

Go 并发编程实战课 -〔晁岳攀(鸟窝)〕

Spark核心原理与实战 -〔王磊〕

说透5G -〔杨四昌〕

超级访谈:对话张雪峰 -〔张雪峰〕

Dubbo源码剖析与实战 -〔何辉〕

好记忆不如烂笔头。留下您的足迹吧 :)