个性化阅读
专注于IT技术分析

Oracle Cross Join(笛卡尔积)

CROSS JOIN指定第一个表中的所有行与第二个表中的所有行联接。如果表1中有” x”行, 表2中有” y”行, 那么交叉连接结果集将具有x * y行。如果未指定匹配的连接列, 通常会发生这种情况。

用简单的话可以说, 如果联接查询中的两个表没有联接条件, 那么Oracle返回其笛卡尔积。

句法

SELECT * 
FROM table1 
CROSS JOIN table2;

Or

SELECT * FROM table1, table2

以上两种语法都相同, 并且用于笛卡尔积。执行后, 它们提供类似的结果。

交叉连接的图像表示

Oracle交叉联接

Oracle Cross Join示例

让我们采用两个表” customer”和” supplier”。

客户表明细

CREATE TABLE  "CUSTOMER" 
   (	"CUSTOMER_ID" NUMBER, "FIRST_NAME" VARCHAR2(4000), "LAST_NAME" VARCHAR2(4000)
   )
/
Oracle交叉联接2

供应商表详细信息

CREATE TABLE  "SUPPLIER" 
   (	"SUPPLIER_ID" NUMBER, "FIRST_NAME" VARCHAR2(4000), "LAST_NAME" VARCHAR2(4000)
   )
/
Oracle交叉联接3

执行此查询

SELECT * FROM customer, supplier

输出

Oracle Cross Join 4
赞(0)
未经允许不得转载:srcmini » Oracle Cross Join(笛卡尔积)

评论 抢沙发

评论前必须登录!