如何在SQL server中添加临时表
我正在尝试向我的查询中添加一个临时表,以便我可以查询该临时表,我已经在互联网上搜索过,但我无法找到解决方案。 这是我的问题如何在SQL server中添加临时表,sql,sql-server,temp-tables,Sql,Sql Server,Temp Tables,我正在尝试向我的查询中添加一个临时表,以便我可以查询该临时表,我已经在互联网上搜索过,但我无法找到解决方案。 这是我的问题 ;WITH cte AS ( SELECT ID, g.Name FROM game.Game g WITH(NOLOCK WHERE ID IN (SELECT Data FROM system.Split(1, ',')) UNION ALL SELECT g.ID, g.Name
;WITH cte AS (
SELECT ID, g.Name
FROM game.Game g WITH(NOLOCK
WHERE ID IN (SELECT Data FROM system.Split(1, ','))
UNION ALL
SELECT g.ID, g.Name
FROM game.Game g WITH(NOLOCK)
JOIN cte ON g.ParentID = cte.ID
)
SELECT c.ID,
c.Name
FROM cte c
INNER JOIN list.Type gt WITH(NOLOCK) ON c.TypeId = gt.TypeID
WHERE c.ID NOT IN (SELECT Data FROM system.Split(1, ','))
AND c.ID IN (SELECT ID FROM game.code WITH(NOLOCK)
WHERE ID = c.ID
AND StatusCode IN ('OP', 'CL', 'SU')
AND isDisplay = 'True'
AND GETDATE() BETWEEN DisplayStart AND DisplayEnd
AND GETDATE() < ISNULL(ResultDateTime, ResultExpected)
)
现在我尝试创建一个临时表,如下所示
Create Table #temp(
ID int,
Name varchar
)
;WITH cte AS (
SELECT ID, g.Name
FROM game.Game g WITH(NOLOCK)
WHERE ID IN (SELECT Data FROM system.Split(1, ','))
UNION ALL
SELECT g.ID, g.Name
FROM game.Game g WITH(NOLOCK)
JOIN cte ON g.ParentID = cte.ID
)
insert into #temp // i wanted to set these values in the temp table
SELECT c.ID,
c.Name
FROM cte c
INNER JOIN list.Type gt WITH(NOLOCK) ON c.TypeId = gt.TypeID
WHERE c.ID NOT IN (SELECT Data FROM system.Split(1, ','))
AND c.ID IN (SELECT ID FROM game.code WITH(NOLOCK)
WHERE ID = c.ID
AND StatusCode IN ('OP', 'CL', 'SU')
AND isDisplay = 'True'
AND GETDATE() BETWEEN DisplayStart AND DisplayEnd
AND GETDATE() < ISNULL(ResultDateTime, ResultExpected)
)
每次我尝试在临时表中存储此信息时,它都会给我一个错误“提供的值的列名或数量与表定义不匹配”。但我在临时表中只有两个值。我做错了什么,我看不见?首先,为什么不直接使用选择进入
然后您不需要将temp定义为表
其次,您的定义是错误的,因为名称只有一个字符。这将用select into修复
然而,我不知道你为什么会犯这样的错误。列的数量似乎匹配。首先,为什么不直接使用select into
然后您不需要将temp定义为表
其次,您的定义是错误的,因为名称只有一个字符。这将用select into修复
然而,我不知道你为什么会犯这样的错误。列数似乎匹配。为什么要使用NOLOCK?临时表u中varchar列的长度是多少?要展开和@Larnu的注释。。。你有一个名为1的列吗?那个拆分函数在我看来很可疑。你们为什么要使用NOLOCK?你们给出的Temp表中varchar列的长度是多少?为了展开和@Larnu的注释。。。你有一个名为1的列吗?该拆分函数在我看来非常可疑。请注意,在同一会话中执行此函数时,它将抛出错误。请注意,在同一会话中执行此函数时,它将抛出错误。
Create Table #temp(
ID int,
Name varchar
)
;WITH cte AS (
SELECT ID, g.Name
FROM game.Game g WITH(NOLOCK)
WHERE ID IN (SELECT Data FROM system.Split(1, ','))
UNION ALL
SELECT g.ID, g.Name
FROM game.Game g WITH(NOLOCK)
JOIN cte ON g.ParentID = cte.ID
)
insert into #temp // i wanted to set these values in the temp table
SELECT c.ID,
c.Name
FROM cte c
INNER JOIN list.Type gt WITH(NOLOCK) ON c.TypeId = gt.TypeID
WHERE c.ID NOT IN (SELECT Data FROM system.Split(1, ','))
AND c.ID IN (SELECT ID FROM game.code WITH(NOLOCK)
WHERE ID = c.ID
AND StatusCode IN ('OP', 'CL', 'SU')
AND isDisplay = 'True'
AND GETDATE() BETWEEN DisplayStart AND DisplayEnd
AND GETDATE() < ISNULL(ResultDateTime, ResultExpected)
)
IF OBJECT_ID('TempDB..#temp') IS NOT NULL
BEGIN
DROP TABLE #temp
END
select c.ID, c.Name
into #temp
from . . .