`
jxb8901
  • 浏览: 166560 次
  • 性别: Icon_minigender_1
  • 来自: shenzhen
社区版块
存档分类
最新评论

SQL也能这样写

阅读更多
根据一个表的数据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);
分享到:
评论

相关推荐

    sqlserver 区分大小写的相关设置

    SQL Server 区分大小写的相关设置 在 SQL Server 中,默认情况下,数据库是区分大小写的,但是可以通过设置 COLLATE 来控制大小写的敏感度。COLLATE 子句用于指定数据库或表中的排序规则和大小写敏感度。 在 SQL ...

    C#不写SQL语句的数据库操作

    本主题将探讨如何在C#中进行不写SQL语句的数据库操作,实现对数据的增删改查功能。 首先,我们可以利用ORM(Object-Relational Mapping)框架来避免直接编写SQL。ORM框架允许开发者用面向对象的方式来操作数据库,...

    SQL Server 设置数据区分大小写的五种方法

    SQL Server 设置数据区分大小写的五种方法: 第一种:在数据库中简单设置一下即可。 第二种: ALTER TABLE tb ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS --不区分大小写 ALTER TABLE tb ALTER...

    SQL查询区别大小写

    ### SQL查询区别大小写 在SQL Server环境中进行数据查询时,了解如何处理字符串中的大小写敏感性至关重要。本文将深入探讨SQL Server中的大小写敏感性问题,并提供实用的方法来确保查询结果的一致性和准确性。 ###...

    c++写的SQL服务器

    这个项目的核心在于,它允许开发者利用C++的强大能力来处理SQL查询,同时提供友好的用户界面,使得非程序员也能方便地进行数据库操作。 首先,让我们关注如何在C++中实现SQL连接。这通常涉及使用数据库API,如ODBC...

    Kepserver通过ODBC 读写SQL数据库

    KEPServerEX是一款强大的工业数据连接软件,它允许设备与应用程序之间进行通信,提供了一种方式来通过ODBC(Open Database Connectivity)接口读写SQL数据库,如SQL Server。本篇文章将详细阐述如何利用KEPServerEX...

    wincc对sql数据库进行读写的实例

    wincc对sql数据库进行读写的实例,由winc集成的vb代码功能在画面中实现对sql数据库的读写。使用环境为博途wincc为方便大家 对代码进行了txt处理 过程进行了截屏处理。代码有注释,截屏有说明。

    赏心悦目的SQL-教你怎么写的美观

    "赏心悦目的SQL-教你怎么写的美观"这个主题旨在强调编写整洁、易读的SQL语句的重要性。以下是一些关于如何写出优雅SQL脚本的要点: 1. **缩进与空格**:在创建表或定义字段时,使用适当的缩进和空格可以使代码更加...

    快速写SQL辅助工具

    6. **性能建议**:SQLPrompt还能提供性能优化建议,分析可能存在的慢查询问题,帮助用户写出执行效率更高的SQL语句。 7. **版本兼容性**:SQLPrompt通常与多种数据库管理系统(如SQL Server、Oracle、MySQL等)兼容...

    SQL2008对表名及字段区分大小写

    ### SQL2008对表名及字段区分大小写的实现方法 #### 一、概述 在SQL Server 2008中,对于表名、字段名等标识符是否区分大小写是一个重要的配置选项,这对于数据库应用程序的设计和开发具有重要意义。在实际应用中...

    美萍2012写狗工具SQL写狗网络版写狗

    为了确保软件的安全性和授权使用,开发者会使用像“SQL写狗”这样的技术,将授权信息写入加密狗中。SQL写狗则意味着这个过程与SQL数据库有关,可能是将用户的授权信息存储在数据库中,然后通过写狗工具将这些信息...

    2018SqlServer Sql Prompt

    而"2018 SQL Server Sql Prompt"正是这样一款为SQL Server量身定制的数据库帮助工具,它以其独特的功能特性,让SQL脚本的编写变得更加便捷,是数据库管理员和开发人员的理想伙伴。 Sql Prompt是Redgate Software...

    SQL智能提示工具,写SQL语句飞一般的速度

    这样的工具广泛应用于SQL Server、MySql等主流数据库管理系统中,为数据库管理员和开发人员提供了强大的支持。 SQL Server和MySql是两种常见的数据库系统,它们各自有独特的特性和功能。SQL Server是微软公司推出的...

    IFIX连接SQL读写数据和制作excel报表图文教程

    ### iFIX连接SQL数据库读写数据与制作Excel报表教程 #### 一、iFIX简介与应用场景 iFIX是一款广泛应用于工业自动化领域的监控与数据采集(SCADA)系统软件。它能够帮助用户实现对生产过程的数据采集、监控以及数据...

    WinCC下用C-script完成对SQL的写操作

    3. 使用C-Script进行SQL写操作 4. 示例代码解析 ### 1. WinCC与C-Script简介 #### 1.1 WinCC概述 WinCC(Windows Control Center)是西门子公司开发的一款人机交互(HMI)软件,广泛应用于工业自动化领域。它提供...

    用DbHelperSQL对数据库读写

    在IT行业中,数据库操作是必不可少的一部分,特别是在Web应用程序开发中。`DbHelperSQL`是一个常见的辅助类,用于简化数据库的读写操作。...在进行深入学习时,了解ADO.NET的基础知识以及SQL语言的使用也非常重要。

    如何写出高效率的SQL语句--SQL优化技巧

    如何写出高效率的SQL语句--SQL优化技巧 SQL 优化技巧是提高数据库性能的关键所在。编写高效率的 SQL 语句需要对索引的机制有一定了解,以下是关于索引的知识点: 索引的优点和局限 索引可以提高查询的效率,但会...

    WINCC读写SQL数据库的例子

    本文将深入探讨如何利用WinCC与SQL数据库进行交互,包括读取和写入数据,以实现更高效的数据管理和分析。我们将结合VBScript脚本语言来实现这一功能,因为WinCC支持VBScript作为其内置脚本语言。 首先,我们需要...

    python 读写sqlserver image字段

    python 通过adodbapi读写sqlserver image字段类型。

    sqlServer-mfc读写封装的

    通过这样的封装,开发者可以在MFC应用程序中创建`CsqlServer`对象,然后调用其成员函数来执行SQL查询、插入、更新和删除等操作。 在`CsqlServer`类中,常见的功能可能包括: 1. 连接数据库:`Connect(const char* ...

Global site tag (gtag.js) - Google Analytics