【问题标题】:Update 1 record in TBL1 when all references in TBL2 are equal to a given value当 TBL2 中的所有引用都等于给定值时,更新 TBL1 中的 1 条记录
【发布时间】:2009-09-28 19:36:34
【问题描述】:

我有两个表,其中一个索引电子邮件活动的详细信息。第二个表格详细说明了此活动的收件人,以及他们是否已回复电子邮件等。

我需要创建一个存储过程,当 TBL2 中的所有引用(收件人)的状态都为 >1 时,它可以更新 TBL1 中“主记录”的状态。

为简单起见,表结构可以假设为;

TBL1

key | Title | Status(default 1)


TBL2

Key | TBL1_Key | Recipient | Status(default 0)

所以基本上我需要做的是当 TBL2 中的所有相应记录的状态为 > 1.

记录链接在TBL1.key = TBL2.TBL1_key

希望这个解释清楚,并希望你能给我一些帮助。

一如既往....谢谢!!!!

【问题讨论】:

    标签: sql sql-server sql-server-2005 tsql stored-procedures


    【解决方案1】:
    UPDATE   tbl1 t1
    SET      status = 2
    WHERE    status = 1
    AND      NOT EXISTS
             (
             SELECT  NULL
             FROM    tbl2 t2
             WHERE   t2.key = t1.key
                     AND t2.status <= 1
             )
    

    【讨论】:

      【解决方案2】:

      如果我正确理解您的要求,那么 TBL1 中的状态可以从 TBL2 中的状态值导出。所以 TBL1 中的 Status 是多余的,可以省略。相反,您可以定义一个视图,其中列出了 TBL1 中的所有条目,并包含另一个列,您可以在其中根据 TBL2 上的条目计算状态。你可以例如统计 TBL2 中 Status

      【讨论】:

      • 马丁听起来很有趣,如果你有时间请你给一个代码示例吗?谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2019-05-10
      相关资源
      最近更新 更多