Oracle Cross Join(笛卡尔积)

CROSS JOIN指定第一个表中的所有行与第二个表中的所有行联接。如果表1中有” x” 行, 表2中有” y” 行, 那么交叉连接结果集将具有x * y行。如果未指定匹配的连接列, 通常会发生这种情况。
用简单的话可以说, 如果联接查询中的两个表没有联接条件, 那么Oracle返回其笛卡尔积。
句法

SELECT * FROM table1 CROSS JOIN table2;

Or
SELECT * FROM table1, table2

以上两种语法都相同, 并且用于笛卡尔积。执行后, 它们提供类似的结果。
【Oracle Cross Join(笛卡尔积)】交叉连接的图像表示
Oracle Cross Join(笛卡尔积)

文章图片
Oracle Cross Join示例 让我们采用两个表” customer” 和” supplier” 。
客户表明细
CREATE TABLE"CUSTOMER" ( "CUSTOMER_ID" NUMBER, "FIRST_NAME" VARCHAR2(4000), "LAST_NAME" VARCHAR2(4000) ) /

Oracle Cross Join(笛卡尔积)

文章图片
供应商表详细信息
CREATE TABLE"SUPPLIER" ( "SUPPLIER_ID" NUMBER, "FIRST_NAME" VARCHAR2(4000), "LAST_NAME" VARCHAR2(4000) ) /

Oracle Cross Join(笛卡尔积)

文章图片
执行此查询
SELECT * FROM customer, supplier

输出
Oracle Cross Join(笛卡尔积)

文章图片

    推荐阅读