如何使用select语句在sql server中更新表

moe*_*moe 5 sql t-sql sql-server-2008

我正在尝试更新一个tabel,其中field的值等于select语句的结果.我有这样一张桌子:

Type     Total#
A           4
B           8
C           1
Run Code Online (Sandbox Code Playgroud)

我想根据select语句的结果更新上面的表.这是我的代码:

update MainTable
  set [Total#] = 
  (SELECT count(distinct r.[ID])as Type
  FROM dbo.TableA r left join
  dbo.TableB a
  on r.Post_ID = a.Post_ID
  where a.Status is null)
Run Code Online (Sandbox Code Playgroud)

如果我按原样运行代码,它将更新所有行但我只想更新select语句中的Type与我的MainTable中的Type相等.谢谢

Joh*_*Woo 9

试一试,

UPDATE  x
SET     x.[Total#] = y.totalCount
FROM    MainTable x
        INNER JOIN
        (
            SELECT  [Type], COUNT(DISTINCT r.[ID]) totalCount
            FROM    dbo.TableA r
                    LEFT JOIN dbo.TableB a
                        ON r.Post_ID = a.Post_ID
            WHERE   a.STATUS IS NULL
            GROUP BY    [Type]
        ) y ON x.[Type] = y.[Type]
Run Code Online (Sandbox Code Playgroud)

PS:在问这样的问题时,请添加表的结构.它有很大帮助.