【发布时间】:2013-04-10 05:43:57
【问题描述】:
在 T-Sql 中编码自三个多月以来,我第一次看到在某些代码中的 UPDATE 语句中使用 CROSS JOIN,但我无法弄清楚它的用途这种结构的例子。
有人知道吗?
编辑:这是一个我还不能理解的示例代码。
UPDATE a
SET a.COL1 = b.COL1
FROM Table1 AS a
CROSS JOIN Table2 AS b
代码中还有其他更新提供了WHERE 子句,例如:
UPDATE a
SET a.COL1 = b.COL1
FROM Table1 AS a
CROSS JOIN Table2 AS b
WHERE condition_on_columns_from_a_and_from_b
重点是对于 Table1 的每一行,带有过滤的交叉连接上的选择会返回多行。
我对这种行为的理解有点困惑。
PS:表 Table1 占用超过 5 GB 的空间..
【问题讨论】:
-
听起来您已经有了一个示例:您正在查看的查询。它有什么作用?
-
你了解交叉连接和内连接的区别吗?
-
听起来像是不确定行为的秘诀,但如果没有看到它就很难分辨。
-
这是因为我无法理解更新的真正作用,我才提出这个问题。是的,当它与 SELECT 语句相关时,我了解不同类型的连接之间的区别。在我看来,更新的行为可能是不确定的,但我不太确定,我将编辑上面的描述以包含一些 samlpe 代码。
标签: sql sql-server tsql