SQL SELECT语句位于FROM内部,带有内部联接
我正在编写一个存储过程,其中有一些变量和一个临时表 我正在努力做到以下几点:SQL SELECT语句位于FROM内部,带有内部联接,sql,sql-server-2008,join,Sql,Sql Server 2008,Join,我正在编写一个存储过程,其中有一些变量和一个临时表 我正在努力做到以下几点: 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)
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行。似乎在t2和t3之间的FROM中计算了一个叉积,我不太清楚为什么。你确定应该在那里使用逗号而不是实际的连接吗?这可能是导致交叉积的原因,而不是从连接的行中进行选择。这是您打算做的吗
INSERT INTO table1(col1, col2, col3)
SELECT @col1, t2.col2, t3.col3
FROM table4 t4 INNER JOIN
#table2 t2
ON t4.ID = t2.ID;
您的原始查询额外引用了表2。在t2和T3之间似乎没有指定连接条件是的,这就是我的想法。所以我需要在FROM?的内部连接t2和t3,类似于:fromtable2t2内部连接选择。。。t2上的t3。[字段]=t3。[字段]。我不知道t2和t3之间的公共字段。看起来您可以消除内联视图,从外部中选择内部,然后直接连接:从表2中选择@col1、t2.col2、t4.col3作为t2将表4作为t4.id=t2.id上的t4