【问题标题】:Update based on another table result根据另一个表结果更新
【发布时间】:2014-01-15 23:45:06
【问题描述】:

我想根据另一个表结果集更新一个临时表。

任何建议。选择查询独立工作。但我正在考虑与更新声明整合。

UPDATE #person_membership_promo_ext 
SET note_about=
(
    select note_text
    FROM note nt 
    INNER JOIN #person_membership_promo_ext per
      ON per.person_id=nt.main_ref_id
        and per.membership_type='P'
        and note_id=(select MAX(note_id)from note nt_1
    where nt_1.main_ref_id=per.person_id)
) 

【问题讨论】:

  • 重写查询如下,它正在工作。

标签: sql sql-server sql-server-2008 tsql


【解决方案1】:
UPDATE per
SET note_about=nt.note_text
FROM note nt 
INNER JOIN #person_membership_promo_ext per
  ON per.person_id=nt.main_ref_id
    and per.membership_type='P'
    and note_id=(select MAX(note_id)from note nt_1
where nt_1.main_ref_id=per.person_id)

【讨论】:

    【解决方案2】:

    您可以在更新语句中使用联接

    UPDATE per
    SET note_about = nt.note_text
    FROM #person_membership_promo_ext per
    INNER JOIN note nt
      ON per.person_id=nt.main_ref_id
        and per.membership_type='P'
        and note_id = (
            select MAX(note_id) 
            from note nt_1
            where nt_1.main_ref_id = per.person_id
       )
    

    【讨论】:

      【解决方案3】:

      给你,

      Update per
      set per.note_about = nt.note_text
      FROM note nt 
      INNER JOIN #person_membership_promo_ext per
      ON per.person_id=nt.main_ref_id
      and per.membership_type='P'
      and note_id=(select MAX(note_id)from note nt_1
      where nt_1.main_ref_id=per.person_id)
      

      我希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-24
        • 2012-09-05
        相关资源
        最近更新 更多