2013-10-03 41 views
0

在输出语句后包含select语句在Sales Territory表上的区域1-4上将CostYTD设置为$ 1000.00。提供显示输出语句,显示地域标识,新的成本YTD老成本YTD如下在输出子句后面包含select语句

TerritoryID  New Cost YTD  Old Cost YTD 
------------ ------------  ------------ 

1    1000.00   0.00 

这是我的代码:

USE AdventureWorks2008R2; 
UPDATE sales.SalesTerritory 
SET CostYTD = 1000.00 
OUTPUT inserted.TerritoryID, deleted.CostYTD, inserted.CostYTD 
WHERE TerritoryID=1 and TerritoryID=2 and TerritoryID=3 and TerritoryID=4 

然而,当我添加了select语句,它告诉我列名是无效的。我不知道该怎么做。另外我知道CostYTD也需要知道新的成本YTD和旧的,所以我这样做? inserted.CostYTD =新的成本YTD?

+0

'OUTPUT'在MySQL中无效 - 它是一个T-SQL构造。 – 2013-10-03 23:57:41

+0

MySQL不支持'OUTPUT'子句 –

+0

请向我们展示失败的SELECT语句。 – Rikalous

回答

0

我希望我的问题得到解决:您希望从OUTPUT子句(如'deleted.field'或'inserted.field')获取每个处理行的信息以便进一步使用它。那么,这里的一个尝试(没有测试):输出必须投入,你必须首先创建以前生产的语句,像这样

DECLARE @outputtab TABLE(inserted_TerritoryID bigint,deleted_CostYTD money,inserted_CostYTD money) 

表(确保数据类型匹配)。在声明中,你可以像这样填充表格变量

OUTPUT inserted.TerritoryID,deleted.CostYTD,inserted.CostYTD INTO @outputtab 

(OUTPUT中的字段顺序必须与@outputtab的顺序相匹配)。之后,您可以查询该表变量。你也可以建立一个临时表或普通表。

+0

我明白你在说什么,但是我得到这个错误,我试图查找它,但没有找到答案,你知道这意味着什么吗? OUTPUT INTO子句的目标表'Sales.SalesTerritory'不能有任何启用的检查约束或任何启用的规则。找到检查约束或规则'CK_SalesTerritory_SalesYTD'。 – necea0612

+0

Mayby FROM失踪?发布完整的声明和错误。 –