Update Table with a quot;Select queryquot; with a where clause(使用“选择查询更新表带有 where 子句)
问题描述
我想实现以下目标:
表(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
Can this be done in ONE update query ? I am looking for Sybase ASE 12.5 on a RHEL 5.0
我找不到 Sybase 的解决方案,但该问题的当前答案适用于 MS SQL Server..
I coudn't find the solution for Sybase, but the current answer to the question works on 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 中不起作用.
UPDATE In MS SQL Server this is what you would do. The OP noted this doesn't work in Sybase.
这篇关于使用“选择查询"更新表带有 where 子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用“选择查询"更新表带有 where 子句
基础教程推荐
- Sql Server 字符串到日期的转换 2021-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01