0 0

请教一条update from where的标准SQL语句0

现有表T_CVG, 主键为(pol_id, cvg_id):
pol_id  | cvg_id | plan_id
--------------------------------
P0001 | 01       | PA01
P0001 | 02       | PA02
P0001 | 03       | PA03
P0002 | 01       | PB01
P0002 | 02       | PB02

现在需要把T_CVG中相同pol_id的plan_id放到另一张表T_TMP(主键为pol_id)中的同一行,即T_TMP最后要变成:
pol_id  | pol_info
------------------------------------
P0001 | ,PA01, PA02, PA03
P0002 | ,PB01, PB02
(注:假设字段pol_info所允许的最大长度能满足需求)

目前我的思路是分两步:
(1) 先给T_TMP插入pol_id,pol_info默认留为空字符'':
insert into T_TMP(pol_id) select distinct pol_id from T_CVG
(2) 从T_CVG中按pol_id把plan_id的信息update到T_TMP的pol_info字段中:
update T_TMP set
pol_info = pol_info + ',' + a.plan_id
from T_CVG a, T_TMP b
where a.pol_id=b.pol_id

但执行以上语句后,发现T_TMP的pol_info只包含pol_id最后一条plan_id的信息,靠前的plan_id没有添加进去:
pol_id  | pol_info
------------------------------------
P0001 | ,PA03
P0002 | ,PB02

请问各位高手,我的update from where语句哪里出错了,该如何写呢?谢谢!
(注:由于数据库产品的选择尚未确定,所以希望只通过标准的sql语句实现)
2013年12月20日 15:01

2个答案 按时间排序 按投票排序

0 0

oracle中:http://database.51cto.com/art/201010/231126.htm

2013年12月20日 17:07
0 0

insert into T_TMP(pol_id,pol_info) select pol_id,GROUP_CONCAT(plan_id) from T_CVG group by pol_id;


GROUP_CONCAT在mysql里面可以用,不知道在其他数据库里面可不可以。

2013年12月20日 16:56

相关推荐

    insert,update导出sql语句

    例如,如果我们有一个名为`Students`的表,包含`ID`,`Name`和`Age`三列,我们可以这样插入一条新记录: ```sql INSERT INTO Students (ID, Name, Age) VALUES (1, '张三', 18); ``` 接着是UPDATE语句,它用于修改...

    一个完整程序只有一条SQL语句

    标题提到的"一个完整程序只有一条SQL语句",这展示了如何高效地利用SQL语句来完成数据操作。在这个程序中,开发者通过一条复杂的SQL语句,实现了对dataGrid的数据进行增、删、改、查(CRUD)操作。在C#环境下,...

    根据update语句自动生成select语句

    例如,使用Node.js的`mysql`库,你可以编写JavaScript代码来执行SQL语句,并获取受影响的行: ```javascript const mysql = require('mysql'); const connection = mysql.createConnection({ /* 连接配置 */ }); ...

    sql server的 update from 语句的深究

    例如,假设`Ttest`表与`Tparent`表有关联,我们要在更新`Ttest`表的`statusInd`时检查其父记录`parent.statusInd`是否也为'ACTIVE',可以编写如下的SQL语句: ```sql UPDATE Ttest SET statusInd = 'ACTIVE' FROM ...

    sql语句生成工具,insert,update

    SQL语句是数据库操作的核心,主要用于插入(INSERT)、更新(UPDATE)和查询数据。在数据库管理系统中,这些操作是日常开发和维护中的基本任务。本文将深入探讨如何使用SQL语句生成工具,特别是针对INSERT和UPDATE...

    sql语句大全sql语句大全sql语句大全sql语句大全sql语句大全sql语句大全

    根据提供的标题、描述、标签以及部分内容,我们可以整理出一系列与SQL语句相关的知识点。下面将对这些知识点进行详细的解释和扩展。 ### SQL语句大全 #### SELECT 语句 - **基本语法**: ```sql SELECT column1,...

    access 一次执行多条sql语句

    ### Access一次执行多条SQL语句 在Access数据库管理中,有时我们需要在同一事务中执行多条SQL语句来确保数据的一致性和完整性。例如,在更新某个记录后可能还需要执行其他操作,如增加日志记录等。本文将详细介绍...

    用一条SQL语句将数据表中某列更新到另一个数据表里

    本文将详细介绍如何使用一条SQL语句来完成这一任务,并通过具体的例子加以说明。 #### 问题描述 假设存在两个数据表T1和T2,它们的结构如下所示: - 表T1: - A1 (非空且唯一) - A2 - A3 - 表T2: - A11 (非空...

    sql语句、动态SQL语句基本语法

    在数据库管理系统(如MySQL、Oracle、SQL Server等)中,SQL语句是不可或缺的一部分。 1. SQL基础语法 SQL的基础语法包括SELECT、INSERT、UPDATE、DELETE四大语句,它们分别用于查询、插入、更新和删除数据。 - ...

    Delphi adoquery处理多条SQL语句

    示例代码展示了如何构建一个包含多条 SQL 语句的字符串: ```delphi var sqlStr: String; begin sqlStr := 'BEGIN'; sqlStr := sqlStr + 'UPDATE Table1 SET Col1=''test'' WHERE 1=2;'; sqlStr := sqlStr + '...

    PB脚本中SQL语句写法与SQL中语句写法对照

    在SQL语言中,可以使用Update表名Set字段名=case字段名when值1then值2else值三endFrom表名Where条件语句来实现条件语句的写法。 四、取余函数Mod() 在PB脚本中,可以使用Mod(要取余数的值,取余值)函数来实现取余数...

    SQL语句SQL语句.zip

    这将向"Employees"表中插入一条新记录。 3. 数据更新(DML):更新现有记录。 ```sql UPDATE Employees SET Age = 31 WHERE Name = 'John Doe'; ``` 这将把所有名为"John Doe"的员工年龄更新为31。 4. 数据...

    arcgis中的sql语句

    ### ArcGIS中的SQL语句详解 #### 一、SQL在ArcGIS中的角色与应用 SQL,全称为Structured Query Language,即结构化查询语言,是专为数据库设计的一种标准语言,用于管理和操作数据库中的数据。在ArcGIS环境中,SQL...

    生成UPDATE语句

    示例代码展示了一个完整的PL/SQL过程,它定义了一系列变量来存储动态生成的SQL语句。具体步骤如下: 1. **声明变量**:首先声明了必要的变量,包括用于存储动态SQL语句的`v_Sql`、表所有者名称`v_Owner_Name`、表...

    update语句

    PL/SQL是Oracle数据库的一种扩展,它允许开发者编写包含`UPDATE`在内的SQL语句的程序块,还包括流程控制语句、变量和异常处理。 在实际工作中,`UPDATE`语句广泛应用于数据维护、数据清洗和业务逻辑处理。了解如何...

    sql 语句大全sql 语句大全

    SQL 语句大全是数据库管理系统中使用的一种标准语言,用于管理关系数据库管理系统。它是一种功能强大且灵活的语言,用于各种数据库管理系统,如 MySQL、SQL Server、Oracle 等。 一、数据库管理 1. 创建数据库:...

    java定时执行sql语句

    通过配置数据库连接信息和要执行的sql语句,可实现定时执行多个sql语句。 所要执行的语句只能是写死的,可支持sqlserver mysql oracle。 配置说明: config/sys.properties 中指定数据库类型及连接信息,执行间隔...

    SQL语句表SQL语句表SQL语句表

    以下是一些SQL语句的主要部分及其用法: 1. **创建表(CREATE TABLE)**:创建一个新的数据库表,指定列名和数据类型。例如: ```sql CREATE TABLE Employees ( ID INT, Name VARCHAR(50), Age INT, Position...

    Oracle批处理:使用C# 自带Oracle驱动一次执行多条Sql语句

    接下来,使用CommandText属性添加SQL语句,可以是一条或多条。为了实现批处理,我们可以使用分号(`;`)作为每条SQL语句的分隔符。例如: ```csharp OracleCommand command = new OracleCommand(); command....

    update 语句优化update 语句优化update 语句优化

    这种方法的优点在于它能够减少SQL语句的数量,并且通常具有更好的性能表现。 ### 结论 通过对上述不同方法的分析,我们可以总结出以下几点: 1. **使用JOIN进行更新**:相比于直接使用子查询,使用`JOIN`语句通常...

Global site tag (gtag.js) - Google Analytics