我正在编写一个存储过程,其中包含一些变量和一个临时表。
我正在尝试执行以下操作:
INSERT INTO table1(
col1,
col2,
col3,
SELECT
@col1,
t2.col2,
t3.col3
FROM
#table2 t2,
(SELECT *
FROM table4 t4
INNER JOIN #table2 t2 ON t4.ID = t2.ID) t3
然而,说t2
和t3
有5行,上面插入5 * 5 = 25行,其中它应该只是5.这似乎是一个交叉产品正在计算中FROM
和t2
之间的t3
,我无法确定原因。
答案 0 :(得分:1)
你确定你应该使用逗号而不是实际的连接吗?这可能是导致交叉产品的原因,而不是连接行的选择。
答案 1 :(得分:1)
这是你打算做的吗?
INSERT INTO table1(col1, col2, col3)
SELECT @col1, t2.col2, t3.col3
FROM table4 t4 INNER JOIN
#table2 t2
ON t4.ID = t2.ID;
您的原始查询额外引用了#table2
。