24

我正在研究 SQL Server 2008,想知道笛卡尔积和交叉连接之间的区别。有人可以帮我澄清这个概念吗?

4

4 回答 4

39

当您进行交叉连接时,您将获得笛卡尔积。第一个表中的每一行都与第二个表中的每一行匹配

在此处输入图像描述

于 2012-08-08T09:25:39.757 回答
13

CROSS JOIN

This join is a Cartesian join that does not necessitate any condition to join. The resultset contains records that are multiplication of record number from both the tables.

cross join

/* CROSS JOIN */
SELECT t1.*,t2.*
FROM Table1 t1
CROSS JOIN Table2 t2

Sorce:
APRIL 13, 2009 BY PINAL DAVE
SQL SERVER – Introduction to JOINs – Basic of JOINs

于 2014-05-23T19:56:51.863 回答
3

两个连接都给出相同的结果。交叉联接是 SQL 99 联接,笛卡尔积是 Oracle 专有联接。

没有“where”子句的交叉连接给出笛卡尔积。笛卡尔积结果集包含第一个表中的行数乘以第二个表中的行数。(导致结果集中的维度更高)。

于 2012-08-08T10:50:53.940 回答
0

笛卡尔积没有任何条件,结果集的总行为 r=r1*r2,其中第一个关系中的 r1 行和第二个关系中的 r2 行。连接满足特定条件

于 2021-10-15T07:26:40.967 回答