📜  SQL |联接(笛卡尔联接和自联接)

📅  最后修改于: 2021-09-09 11:47:00             🧑  作者: Mango

SQL| JOIN(内、左、右、全连接)
在本文中,我们将讨论剩下的两个 JOIN:

  • 笛卡尔连接
  • 自加入

考虑下面的两个表:
桌子

学生课程

表5

    1. CARTESIAN JOIN :CARTESIAN JOIN 也称为 CROSS JOIN。在 CARTESIAN JOIN 中,一个表的每一行到另一个表的每一行都有一个连接。这通常发生在未指定匹配列或 WHERE 条件时。
      • 在没有 WHERE 条件的情况下, CARTESIAN JOIN 将表现得像 CARTESIAN PRODUCT 。即,结果集中的行数是两个表的行数的乘积。
      • 在存在 WHERE 条件的情况下,此 JOIN 的函数类似于 INNER JOIN。
      • 一般来说,交叉连接类似于内部连接,其中连接条件总是评估为 True

      句法:

      SELECT table1.column1 , table1.column2, table2.column1...
      FROM table1
      CROSS JOIN table2;
      
      
      table1: First table.
      table2: Second table
      

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

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

    输出
    table_final

  1. SELF JOIN :顾名思义,在 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.
    

    示例查询(自联接):

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

    输出:
    表