SQL – 连接(笛卡尔连接和自连接)

SQL 连接(笛卡尔连接和自连接)

SQL|连接(内连接,左连接,右连接和全连接)

在本文中,我们将讨论剩下的两个join:

  • CARTESIAN JOIN
  • SELF JOIN

考虑以下两个表格:

SQL 连接(笛卡尔连接和自连接)

StudentCourse

SQL 连接(笛卡尔连接和自连接)

笛卡尔连接(CARTESIAN JOIN)

笛卡尔连接也被称为交叉连接。在笛卡尔连接中,一个表的每一行与另一个表的每一行都有一个连接。这通常发生在没有指定匹配列或WHERE条件的情况下。

  • 在没有WHERE条件的情况下,笛卡尔连接的行为将类似于笛卡尔积。也就是说,结果集中的行数是两个表的行数的乘积。

  • 在存在WHERE条件的情况下,此连接的功能类似于内连接。

  • 一般来说,交叉连接类似于内部连接,其中连接条件将始终计算为True

语法:

SELECT table1.column1 , table1.column2, table2.column1...
FROM table1
CROSS JOIN table2;        

table1 : 第一个表.
table2 : 第二个表

示例查询(笛卡尔连接):

  • 在下面的查询中,我们将从Student表中选择NAME和Age,从StudentCourse表中选择COURSE_ID。在输出中,您可以看到Student表的每一行与StudentCourse表的每一行连接在一起。结果集中的总行数= 4 * 4 = 16。
SELECT Student.NAME, Student.AGE, StudentCourse.COURSE_ID
    FROM Student
    CROSS JOIN StudentCourse;

输出 :

SQL 连接(笛卡尔连接和自连接)

自连接(SELF JOIN)

顾名思义,在SELF JOIN中,表是与自己连接的。也就是说,根据某些条件,表的每一行都与自身和所有其他行连接。换句话说,我们可以说它是同一个表的两个副本之间的连接。

语法:

SELECT a.coulmn1 , b.column2
    FROM table_name a, table_name b
    WHERE some_condition;    

table_name : 表名
some_condition : 选择行的条件.

示例查询(SELF JOIN):

SELECT a.ROLL_NO , b.NAME
    FROM Student a, Student b
    WHERE a.ROLL_NO < b.ROLL_NO;

输出:

SQL 连接(笛卡尔连接和自连接)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程