【发布时间】:2016-07-15 18:32:34
【问题描述】:
我有一个表变量@searchResult:
DECLARE @searchResult TABLE (
[name_template] NVARCHAR(50),
[record_id] INT,
[record_name] NVARCHAR(50)
);
还有表[records]:
CREATE TABLE [records] (
[record_id] INT IDENTITY(1, 1) PRIMARY KEY,
[record_name] NVARCHAR(50)
)
@searchResult 包含仅填充了[name_template] 的记录。我想用匹配[name_template] 的[records] 表中的最新[record_id] 和[record_name] 更新它。
我尝试了以下 SQL 查询但没有成功:
UPDATE @searchResult
SET [record_id] = r.[record_id], [record_name] = r.[record_name]
FROM (
SELECT TOP 1
r.[record_id]
, r.[record_name]
FROM [records] AS r
WHERE r.[record_name] LIKE [name_template]
ORDER BY r.[record_id] DESC
) AS r;
错误信息:
列名“name_template”无效。
用所需值更新@searchResult 的正确语法是什么?
【问题讨论】:
-
查看正在用于更新的查询。我假设表记录没有名为 name_template 的列?它是您的表变量。请记住,您的查询必须自行执行。这意味着在这种情况下,您必须在查询中加入表变量。
-
引号丢失 ..like 'name_template' 或 like '%name_template%'
标签: sql sql-server sql-server-2008