Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在“中使用表变量”;从选择更新";查询_Sql_Sql Server_Sql Server 2005_Tsql_Table Variable - Fatal编程技术网

Sql 如何在“中使用表变量”;从选择更新";查询

Sql 如何在“中使用表变量”;从选择更新";查询,sql,sql-server,sql-server-2005,tsql,table-variable,Sql,Sql Server,Sql Server 2005,Tsql,Table Variable,我有一个表变量声明,后跟一个查询: DECLARE @CurrentItems TABLE ( ItemId uniqueidentifier, ItemUnits int ) UPDATE U SET U.Units = U.Units + [@CurrentItems].ItemUnits FROM @CurrentItems CI INNER JOIN U ON U.UId=CI.ItemId; 而U的定义如下: CREATE TABLE [dbo].[U] (

我有一个表变量声明,后跟一个查询:

DECLARE @CurrentItems TABLE
(
    ItemId uniqueidentifier,
    ItemUnits int
)

UPDATE U SET U.Units = U.Units + [@CurrentItems].ItemUnits
    FROM @CurrentItems CI INNER JOIN U ON U.UId=CI.ItemId;
U
的定义如下:

CREATE TABLE [dbo].[U] (
    [UId]         UNIQUEIDENTIFIER UNIQUE NOT NULL,
    [Units]       INT DEFAULT ((0)) NOT NULL
);
在针对SQL Server 2005 Express的SQL Management Studio中运行时,我得到以下结果:

Msg 208,16级,状态1,第24行

无效的对象名称“@CurrentItems”

我已经研究过很多类似的问题,但不知道如何解决这个问题


实际问题是什么?我该如何解决?

您已将
@CurrentItems
CI混用,因此只需使用
CI

UPDATE U SET U.Units = U.Units + CI.ItemUnits
    FROM @CurrentItems CI INNER JOIN U ON U.UId=CI.ItemId;
再看看您的查询,您的查询类似于
U.UId=CU.ItemID
。什么是CU?您已使用CI为@CurrentItems创建了别名,那么CU的用途是什么?如果这是一个错误,只是一个输入错误,请确保您使用
CI
更改对
CU
的任何引用


你也没有告诉我们什么是
U
,我希望这是一个有效的表。

@sharptooth,你完全删除了
CU
?不幸的是,我使用了你的表定义,无法复制,它对我来说工作得非常好。我的错误-我忘了从表变量名中删除
[]
。无需
[]
@Sharptooth即可工作您是否在正确的数据库上下文中运行此操作?您应该使用
use
关键字并指定正在处理的数据库<代码>使用MyDB…
@sharptooth-您应该复制粘贴的我的代码:)您不需要在表变量中使用
[]
,因为它有别名。
更新U SET U.Units=U.Units+CI.ItemUnits FROM@CurrentItems CI INNER JOIN U ON U.UId=CI.ItemId有效,我现在已经试过了