首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server:从另一个表更新表

Server:从另一个表更新表
EN

Stack Overflow用户
提问于 2016-08-18 10:59:09
回答 2查看 67关注 0票数 2

我有两个表,一个代表一些数据,另一个把两个数据连接在一起。第一列是Redaction,有三列:IDXY。第二个列LinkedRedactions有两个列:PrimaryIDSecondaryID,它们是来自Redaction的两行的IDs,这些行是链接的,需要具有相同的XY值。

我想要做的是更新XYRedaction中的值,如果它们与对应的PrimaryIDXY的值不相同的话。

不幸的是,我不能使用TRIGGER,因为脚本将在kCura的相对论平台上运行,这不允许它们。SQL脚本非常理想,它每隔几秒钟由代理运行一次。

我尝试声明一个临时表并根据表进行更新,但这给了我错误

“必须声明标量变量@T”

代码语言:javascript
复制
DECLARE @T TABLE (
    [ID] INT, [X] INT, [Y] INT
)

INSERT INTO @T 
    SELECT 
        [ID], [X], [Y]
    FROM 
        [Redaction] AS R
    WHERE 
        [ID] IN (
            SELECT [PrimaryID] FROM [LinkedRedactions]
        )

UPDATE 
    [Redaction]
SET
    [X] = @T.[X], [Y] = @T.[Y]
WHERE
    [Redaction].[ID] IN (
        SELECT [ID] FROM @T
    )

免责声明:这是我学习SQL的第二天,希望有更多的描述性答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-18 11:10:56

可以使用内部联接简化整个代码。

代码语言:javascript
复制
UPDATE red
SET [X] = redPrimary.[X], [Y] = redPrimary.[Y]
FROM [Redaction] red
INNER JOIN [LinkedRedactions] redLnk ON red.[ID] = redLnk.SecondaryIDs
INNER JOIN [Redaction] redPrimary ON redLnk.PrimaryID = redPrimary.[ID]

解释:

代码语言:javascript
复制
[Redaction] red
[LinkedRedactions] redLnk
[Redaction] redPrimary

红色、redLnk和redPrimary称为别名,它们使用不同的名称来调用表。

代码语言:javascript
复制
INNER JOIN

这是一种只有在左表和右表都存在相同列值的情况下才匹配的联接类型。

代码语言:javascript
复制
UPDATE red
--SET statement
FROM [Redaction] red

这只会通过别名'red‘更新编辑表。

代码语言:javascript
复制
INNER JOIN [LinkedRedactions] redLnk ON red.[ID] = redLnk.SecondaryIDs

这将分别连接由辅助ID和ID更新的Link表和表。

代码语言:javascript
复制
INNER JOIN [Redaction] redPrimary ON redLnk.PrimaryID = redPrimary.[ID]

这将再次连接链接表和编辑表,但分别使用主ID和ID列。这是一个自联接,它允许我们用来自同一表的不同的一组值更新表中的一组值。

不需要条件,因为条件是在ON子句中处理的。

票数 2
EN

Stack Overflow用户

发布于 2016-08-18 11:05:38

您可以使用UPDATE FROM

代码语言:javascript
复制
UPDATE [Redaction]
SET
    [X] = T.[X], 
    [Y] = T.[Y]
FROM 
    @T T
WHERE
    [Redaction].[ID] = T.[ID]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39016482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档