我想实现以下目标:
表 (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/