sql - 使用 where 子句使用 "Select query"更新表

标签 sql sql-server select join sql-update

我想实现以下目标:

表 (my_table) 的当前状态

 id        totalX          totalY          totalZ               
 --------- --------------  --------------  --------------       
         9             34              334             0      
        10              6               56             0      
        11             21              251             0      
        12              3               93             0   

(my_table2)的查询结果

select id,count(*) as total FROM my_table2 WHERE column_2 = 1 GROUP BY id

 id        total               
 --------- --------------       
         9            500      
        10            600      
        11            700      
        12            800  

表 (my_table) 的预期状态

 id        totalX          totalY          totalZ               
 --------- --------------  --------------  --------------       
         9             34              334             500      
        10              6               56             600      
        11             21              251             700      
        12              3               93             800    

这可以在一次更新查询中完成吗?我正在寻找 RHEL 5.0 上的 Sybase ASE 12.5

编辑:我找不到 Sybase 的解决方案,但该问题的当前答案适用于 MS SQL Server。

最佳答案

   update 
          my_table 
   set 
      my_table.totalZ = t.total 
   FROM
    my_table mt
    INNER JOIN 
       (select id,count(*) as total 
       FROM my_table2 
      WHERE column_2 = 1 GROUP BY id) t
   on mt.id  = t.id

更新 在 MS SQL Server 中,这就是您要做的事情。 OP 指出这在 Sybase 中不起作用。

关于sql - 使用 where 子句使用 "Select query"更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3779786/

相关文章:

c# - 从 C# 启动 sqlcmd 时如何检索错误?

sql - 如何在 SQL 中找到所有行的每组最大值?

dictionary - jq 将 value 替换为 map 并根据两个条件在列表中进行选择

sql - 如何根据出生日期和 getDate() 计算年龄(以岁为单位)

mysql - 进行聚合查询的不同方法

c++ - SQL 选择多个 ids firebird

jquery - Rails 选定的字段未显示在表单上

MySql 查询在字段中包含一个字符串

sql-server - 将特定列中的所有行设置为 false

sql - MS SQL 按月选择日期时间?