2017-03-04 89 views
0

这个问题已经被问了好几次了,但是这个解决方案并不适合我。我不知道为什么。在没有循环的情况下在临时表格中插入多行

其实我试图创建SQL查询一个临时表,其中我在临时表中使用SELECT INTO插入一些记录,但每次它返回一个空行:

这里就是我想:

Create Table #TempTable 
    (
     EntityID BIGINT 
) 

    INSERT INTO #TempTable (EntityID) 
    SELECT pkEntityID FROM Employee WHERE EmpID = 45 

    Select * from #TempTable 

对应于45,Employee表中有10行。是否就像我必须做一些其他的事情或像结构这样的循环,因为我们只能一次在表中插入一行?

+1

你确定'SELECT pkEntityID FROM Employee WHERE EmpID = 45'返回10行吗? – GurV

+2

你的查询是好的。没有行匹配条件'EmpId = 45'。 。 。或者当你检查'#TempTable'中的行时你犯了一个错误。 –

+0

是的。我确定。它会一直返回多行,我必须收集表中的所有ID以便与另一个表一起加入。 – Sweetie

回答

0

在评论中已经说明了这一点,所有这些都是我投票通过的,但是要回答你的问题......除此之外你不需要做任何事情。源表中显然不存在EmpID = 45。这里有一个重复的例子:

Declare @Employee Table (pkEntityID bigint, EmpID int) 
insert into @Employee (pkEntityID, EmpID) 
values 
(32168123,45), 
(89746541,45), 
(55566331,45), 
(45649224,12) 


Create Table #TempTable 
    (
    EntityID BIGINT 
    ) 

INSERT INTO #TempTable (EntityID) 
SELECT pkEntityID FROM @Employee WHERE EmpID = 45 

Select * from #TempTable 

drop table #TempTable 
0

你有意外也创造了Employee表中的主数据库和当前连接到主数据库?

相关问题