SQL使用子查询中的值更新多个单元格

时间:2016-01-28 04:49:41

标签: sql sql-update subquery common-table-expression

前几天,我以为我找到了一种非常优雅的方式来更新一组细胞的一部分。这就是我想出的:

Update mytable
Set ExternalLink = REPLACE (ExternalLink, R.UniqueID, R.ParentUniqueID)
From (
Select u.UniqueID, u.ParentUniqueID, RIGHT (mt.ExternalLink, 7) as EL
From uniqueidtable u
Join mytable mt
On EL = u.ParentUniqueID
Where mt.ExternalLink Like '%stringinurl%' ) R

我相信我从堆叠问题中得到了这个想法,但我在历史上找不到它。

我似乎无法更新多个单元格,即使子查询单独测试时返回多行。这有什么问题,如何调整它以一次更新多个单元格?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好的,我想出了一个答案。我不确定为什么Table Expression在这种情况下不起作用,但这是我想出的:

    UPDATE mytable
    SET ExternalLink = REPLACE(Ta.ExternalLink, T.ParentUniqueID, T.UniqueID)
    FROM mytable Ta
    JOIN UniqueIDtable
    ON RIGHT(Ta.ExternalLink, 7) = T.ParentUniqueID
    WHERE ExternalLink LIKE '%stringinurl%' AND ISNUMERIC(RIGHT(Ta.ExternalLink, 7)) = '1';

我似乎只是弄乱了替换中ID和父ID的位置。我也没有指望ExternalLink列中URL字符串的结尾只是一个数值,所以也提出了一些问题。它现在似乎对我有用,所以我已经为我做了。