SQL连接(笛卡尔连接和自连接用法示例)

【SQL连接(笛卡尔连接和自连接用法示例)】SQL | JOIN(内, 左, 右和完全连接)
在本文中, 我们将讨论剩余的两个JOINS:

  • 笛卡尔连接
  • 自连接
考虑下面的两个表:
SQL连接(笛卡尔连接和自连接用法示例)

文章图片
StudentCourse
SQL连接(笛卡尔连接和自连接用法示例)

文章图片
笛卡尔连接:CARTESIAN JOIN也称为CROSS JOIN。在"笛卡尔连接"中, 一个表的每一行与另一表的每一行都有一个连接。当未指定匹配列或WHERE条件时, 通常会发生这种情况。
  • 在没有WHERE条件的情况下, 笛卡尔连接的行为类似于笛卡尔乘积。即结果集中的行数是两个表的行数的乘积。
  • 在存在WHERE条件的情况下, 此JOIN将像INNER JOIN一样起作用。
  • 一般而言, 交叉连接类似于内部连接, 其中连接条件始终为True。
语法如下:
SELECT table1.column1 , table1.column2, table2.column1... FROM table1 CROSS JOIN table2; table1: First table. table2: Second table

查询示例(CARTESIAN JOIN):在下面的查询中, 我们将从"学生"表中选择"姓名"和"年龄", 并从"学生课程"表中选择" COURSE_ID"。在输出中, 你可以看到表格Student的每一行都与表格StudentCourse的每一行连接在一起。结果集中的总行数= 4 * 4 = 16。
SELECT Student.NAME, Student.AGE, StudentCourse.COURSE_ID FROM Student CROSS JOIN StudentCourse;

输出如下:
SQL连接(笛卡尔连接和自连接用法示例)

文章图片
自连接:顾名思义, 在SELF JOIN中将一个表连接到自身。也就是说, 表的每一行都与自身以及所有其他行(取决于某些条件)结合在一起。换句话说, 我们可以说这是同一张表的两个副本之间的连接。
语法如下:
SELECT a.coulmn1 , b.column2 FROM table_name a, table_name b WHERE some_condition; table_name: Name of the table. some_condition: Condition for selecting the rows.

查询示例(SELF JOIN):
SELECT a.ROLL_NO , b.NAME FROM Student a, Student b WHERE a.ROLL_NO < b.ROLL_NO;

输出如下:
SQL连接(笛卡尔连接和自连接用法示例)

文章图片
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

    推荐阅读