根据一个表的数据update另一个表数据的SQL语句通常如下:
Mysql语法:
update T1 inner join (select ID, TYPE, sum(AMOUNT)
as NEW_AMOUNT from T2 group by ID, TYPE) as T3
on T1.ID = T3.ID and T1.TYPE = T3.TYPE
set T1.AMOUNT = T1.AMOUNT+T3.NEW_AMOUNT
SqlServer语法:
update T1 set T1.AMOUNT = T1.AMONT+T3.NEW_AMOUNT
from T1 inner join (select ID, TYPE, sum(AMOUNT)
as NEW_AMOUNT from T2 group by ID, TYPE) as T3
on T1.ID = T3.ID and T1.TYPE = T3.TYPE
但不幸的是上面两种语法均不符合ANSI92的SQL标准,也不能在Hsql中使用。
难道ANSI92不支持这样常用的update功能吗?答案是否,使用如下的SQL语句
即可实现与上面写法相同的功能:
update T1 set T1.AMOUNT = T1.AMOUNT+
(select sum(T2.AMOUNT) from T2
group by T2.ID, T2.TYPE
having T2.ID=T1.ID and T2.TYPE=T1.TYPE)
上述SQL在Hsql1.7.2和Mysql5.1下测试成功,测试数据如下:
CREATE TABLE T1 (
ID varchar(255),
TYPE varchar(255),
AMOUNT decimal
);
CREATE TABLE T2 (
ID varchar(255),
TYPE varchar(255),
AMOUNT decimal
);
delete from T2;
delete from T1;
insert into T2(ID,TYPE,AMOUNT)
values('0000000001', 'P', 10);
insert into T2(ID,TYPE,AMOUNT)
values('0000000001', 'P', 20);
insert into T2(ID,TYPE,AMOUNT)
values('0000000002', 'P', 30);
insert into T2(ID,TYPE,AMOUNT)
values('0000000001', 'N', 10);
insert into T2(ID,TYPE,AMOUNT)
values('0000000002', 'N', 20);
insert into T2(ID,TYPE,AMOUNT)
values('0000000002', 'N', 30);
insert into T1 values('0000000001', 'P', 0);
insert into T1 values('0000000001', 'N', 0);
insert into T1 values('0000000002', 'P', 0);
insert into T1 values('0000000002', 'N', 0);
分享到:
相关推荐
SQL Server 区分大小写的相关设置 在 SQL Server 中,默认情况下,数据库是区分大小写的,但是可以通过设置 COLLATE 来控制大小写的敏感度。COLLATE 子句用于指定数据库或表中的排序规则和大小写敏感度。 在 SQL ...
易语言是一种专为中国人设计的编程语言,它以简体中文作为编程语法,降低了编程的门槛,使得更多非计算机专业的人也能进行程序开发。在易语言中,进行SQL图片读写是一项常见的操作,尤其在数据库应用开发中。下面将...
本主题将探讨如何在C#中进行不写SQL语句的数据库操作,实现对数据的增删改查功能。 首先,我们可以利用ORM(Object-Relational Mapping)框架来避免直接编写SQL。ORM框架允许开发者用面向对象的方式来操作数据库,...
SQL Server 设置数据区分大小写的五种方法: 第一种:在数据库中简单设置一下即可。 第二种: ALTER TABLE tb ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS --不区分大小写 ALTER TABLE tb ALTER...
### SQL查询区别大小写 在SQL Server环境中进行数据查询时,了解如何处理字符串中的大小写敏感性至关重要。本文将深入探讨SQL Server中的大小写敏感性问题,并提供实用的方法来确保查询结果的一致性和准确性。 ###...
这个项目的核心在于,它允许开发者利用C++的强大能力来处理SQL查询,同时提供友好的用户界面,使得非程序员也能方便地进行数据库操作。 首先,让我们关注如何在C++中实现SQL连接。这通常涉及使用数据库API,如ODBC...
wincc对sql数据库进行读写的实例,由winc集成的vb代码功能在画面中实现对sql数据库的读写。使用环境为博途wincc为方便大家 对代码进行了txt处理 过程进行了截屏处理。代码有注释,截屏有说明。
"赏心悦目的SQL-教你怎么写的美观"这个主题旨在强调编写整洁、易读的SQL语句的重要性。以下是一些关于如何写出优雅SQL脚本的要点: 1. **缩进与空格**:在创建表或定义字段时,使用适当的缩进和空格可以使代码更加...
KEPServerEX是一款强大的工业数据连接软件,它允许设备与应用程序之间进行通信,提供了一种方式来通过ODBC(Open Database Connectivity)接口读写SQL数据库,如SQL Server。本篇文章将详细阐述如何利用KEPServerEX...
6. **性能建议**:SQLPrompt还能提供性能优化建议,分析可能存在的慢查询问题,帮助用户写出执行效率更高的SQL语句。 7. **版本兼容性**:SQLPrompt通常与多种数据库管理系统(如SQL Server、Oracle、MySQL等)兼容...
### SQL2008对表名及字段区分大小写的实现方法 #### 一、概述 在SQL Server 2008中,对于表名、字段名等标识符是否区分大小写是一个重要的配置选项,这对于数据库应用程序的设计和开发具有重要意义。在实际应用中...
为了确保软件的安全性和授权使用,开发者会使用像“SQL写狗”这样的技术,将授权信息写入加密狗中。SQL写狗则意味着这个过程与SQL数据库有关,可能是将用户的授权信息存储在数据库中,然后通过写狗工具将这些信息...
而"2018 SQL Server Sql Prompt"正是这样一款为SQL Server量身定制的数据库帮助工具,它以其独特的功能特性,让SQL脚本的编写变得更加便捷,是数据库管理员和开发人员的理想伙伴。 Sql Prompt是Redgate Software...
这样的工具广泛应用于SQL Server、MySql等主流数据库管理系统中,为数据库管理员和开发人员提供了强大的支持。 SQL Server和MySql是两种常见的数据库系统,它们各自有独特的特性和功能。SQL Server是微软公司推出的...
### iFIX连接SQL数据库读写数据与制作Excel报表教程 #### 一、iFIX简介与应用场景 iFIX是一款广泛应用于工业自动化领域的监控与数据采集(SCADA)系统软件。它能够帮助用户实现对生产过程的数据采集、监控以及数据...
3. 使用C-Script进行SQL写操作 4. 示例代码解析 ### 1. WinCC与C-Script简介 #### 1.1 WinCC概述 WinCC(Windows Control Center)是西门子公司开发的一款人机交互(HMI)软件,广泛应用于工业自动化领域。它提供...
在IT行业中,数据库操作是必不可少的一部分,特别是在Web应用程序开发中。`DbHelperSQL`是一个常见的辅助类,用于简化数据库的读写操作。...在进行深入学习时,了解ADO.NET的基础知识以及SQL语言的使用也非常重要。
如何写出高效率的SQL语句--SQL优化技巧 SQL 优化技巧是提高数据库性能的关键所在。编写高效率的 SQL 语句需要对索引的机制有一定了解,以下是关于索引的知识点: 索引的优点和局限 索引可以提高查询的效率,但会...
本文将深入探讨如何利用WinCC与SQL数据库进行交互,包括读取和写入数据,以实现更高效的数据管理和分析。我们将结合VBScript脚本语言来实现这一功能,因为WinCC支持VBScript作为其内置脚本语言。 首先,我们需要...
python 通过adodbapi读写sqlserver image字段类型。