【发布时间】:2015-10-10 10:22:30
【问题描述】:
在 SSMS 2014 中,我有一个有效的 SELECT 查询,并希望将其转换为 UPDATE 语句以更新主表中的字段。我尝试并尝试了许多解决方案,每种解决方案都会导致不同的错误。
我之前已经设法执行简单的 UPDATE SET WHERE 查询,但是在 WHERE 子句中使用派生表会稍微复杂一些。在搜索时,我找到了一个 JOIN 解决方案,但对我来说,它不喜欢 RIGHT 或 JOIN,在那个解决方案中,SET 是最后一行,SSMS 也不喜欢这样,所以我现在有点困惑。
这是我选择正确 SKU 的有效 SELECT 语句:
SELECT
dbo.tblHKProducts.SKU_ID, dbo.tblHKProducts.SKU_Description,
dbo.tblHKProducts.SKU_Scan_Group
FROM
dbo.tblHKProducts
RIGHT OUTER JOIN
(SELECT
tblHKProducts_1.SKU_ID, tblHKProducts_1.SKU_Description,
dbo.ForceScanByDescriptions.FindDescription
FROM
dbo.tblHKProducts AS tblHKProducts_1
RIGHT OUTER JOIN
dbo.ForceScanByDescriptions ON tblHKProducts_1.SKU_Description = dbo.ForceScanByDescriptions.FindDescription
WHERE
(tblHKProducts_1.SKU_Description IS NOT NULL)
) AS derivedtbl_1 ON dbo.tblHKProducts.SKU_ID = derivedtbl_1.SKU_ID
我正在尝试做这样的事情,SKU_Scan_Group 是tblHKProducts 中的一个字段:
UPDATE dbo.tblHKProducts
SET SKU_Scan_Group = N'Yes'
RIGHT OUTER JOIN
(SELECT
tblHKProducts_1.SKU_ID, tblHKProducts_1.SKU_Description,
dbo.ForceScanByDescriptions.FindDescription
FROM
dbo.tblHKProducts AS tblHKProducts_1
RIGHT OUTER JOIN
dbo.ForceScanByDescriptions ON tblHKProducts_1.SKU_Description = dbo.ForceScanByDescriptions.FindDescription
WHERE
(tblHKProducts_1.SKU_Description IS NOT NULL)
) AS derivedtbl_1 ON dbo.tblHKProducts.SKU_ID = derivedtbl_1.SKU_ID
任何帮助将不胜感激!
谢谢 凯夫
【问题讨论】:
标签: sql-server select join outer-join derived-table