Sql 尝试将查询附加到临时表上
使用SQL Server 2008-R2 我有一个csv的购买ID,在我的数据库中有一个带有这些购买ID的表,在我们的系统中有相应的用户ID。我需要这些来运行一个更复杂的查询之后,使用。我试图大容量插入或运行导入向导,但我没有权限。我的新想法是使用SELECT-INTO创建一个#temp,然后将查询放入其中,如下所示Sql 尝试将查询附加到临时表上,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,使用SQL Server 2008-R2 我有一个csv的购买ID,在我的数据库中有一个带有这些购买ID的表,在我们的系统中有相应的用户ID。我需要这些来运行一个更复杂的查询之后,使用。我试图大容量插入或运行导入向导,但我没有权限。我的新想法是使用SELECT-INTO创建一个#temp,然后将查询放入其中,如下所示 SELECT * INTO ##PurchaseIDs FROM ( SELECT PurchaseID, UserID, Added FROM Users
SELECT *
INTO ##PurchaseIDs
FROM
(
SELECT PurchaseID, UserID, Added
FROM Users
WHERE PurchaseID IN (
/* These are the csv IDs just copied and pasted in */
'49397828',
'49397883',
etc.
发生的情况是大约有55000个ID,所以我得到了这个错误
查询处理器耗尽了内部资源,无法运行
生成查询计划。这是一个罕见的事件,只有在
非常复杂的查询或引用非常大的
表或分区的数量。请简化查询。如果你
如果您错误地收到此消息,请联系客户
支持服务以获取更多信息
如果我上传大约30000个,那么我的新计划就是看看我是否可以制作一个临时表,然后在表的末尾附加一个新表。我也愿意接受其他关于如何完成我想做的事情的想法。我在下面附上了我的想法
INSERT *
INTO ##PurchaseIDs
FROM (
SELECT PurchaseID, UserID, Added
FROM Users
WHERE PurchaseID IN (
/* These are the OTHER csv IDS just copied and pasted in */
'57397828',
'57397883',
etc.
您需要创建一个临时表,并将
in
子句中的值插入临时表,然后连接临时表以获得结果
Create table #PurchaseIDs (PurchaseID int)
insert into #PurchaseIDs (PurchaseID)
Select '57397828'
Union All
Select '57397828'
Union All
......
values from csv
现在使用Exists
检查temp表中是否存在PurchaseID
,而不是子句中的
SELECT PurchaseID,
UserID,
Added
FROM Users u
WHERE EXISTS (SELECT 1
FROM #PurchaseIDs p
WHERE u.PurchaseID = p.PurchaseID)
不能将ID加载到带有BCP或SSIS包的表中,然后加入该表以插入数据吗?