Oracle Cross Join
交叉联接指定第一个表中的所有行与第二个表中的所有行联接。如果表1中有" x"行,而表2中有" y"行,那么交叉连接结果集将具有x * y行。通常,当没有指定匹配的联接列时就会发生这种情况。
简单地说,如果联接查询中的两个表没有联接条件,那么Oracle返回其笛卡尔积。
语法
SELECT *
FROM table1
CROSS JOIN table2;
或
SELECT * FROM table1, table2
以上两种语法相同,并且用于笛卡尔积。执行后,它们提供类似的结果。
交叉联接的图像表示
Oracle交叉连接示例
让我们采用两个表" customer"和" supplier"。
Customer table detail
CREATE TABLE "CUSTOMER"
( "CUSTOMER_ID" NUMBER,
"FIRST_NAME" VARCHAR2(4000),
"LAST_NAME" VARCHAR2(4000)
)
/
SUPPLIERS表详细信息
CREATE TABLE "SUPPLIER"
( "SUPPLIER_ID" NUMBER,
"FIRST_NAME" VARCHAR2(4000),
"LAST_NAME" VARCHAR2(4000)
)
/
执行此查询
SELECT * FROM customer,supplier
输出