`

mysql查询,更新(text类型),删除关联操作

阅读更多

注意:mysql中不支持全关联,支持左外,右外关联,oracle支持全关联查询

1.今天做了这么一个需求,简单抽离说明一下:操作表:biz_pu_arrival_detail 关联表:ba_inventory

需求是将 关联表中的 propertyId 赋值给 操作表中的propertyId,关联条件是操作表中的 inventoryId字段和关联表中的id 关联。

错误解答:开始写的sql是这样的:

UPDATE  (SELECT detail.id,detail.propertyId,ba.propertyId AS pid FROM biz_pu_arrival_detail detail JOIN ba_inventory ba ON detail.inventoryId = ba.id WHERE detail.`propertyId` IS NULL AND  detail.orgid =4967219392022528) a SET a.propertyId = a.pid ;

因为 update table t set t.oldName = t.newName 是可以执行的;

但是执行结果报The target table a of the UPDATE is not updatable,原因是不能对虚拟视图做操作,update数据需要对物理表操作;

正确解答:

UPDATE biz_pu_arrival_detail detail

  JOIN ba_inventory ba ON ba.orgId = detail.orgId AND detail.inventoryId = ba.id

SET detail.propertyId = ba.propertyId

WHERE detail.`propertyId` IS NULL  AND  detail.orgid =4967219392022528;

知识点:关联语句不仅仅只有关联查询,还可以关联更新,同样可以关联删除操作,之前只知道可以关联查询,特此记录

2.具体关联形式

 2.1 双等号关联

select  a.*,b.* from a,b where a.pid = b.pid

 2.2 外关联(左外关联,右外关联,全外关联)

select a.*,b.* from a

 left(right,full)(outer )join b on a.pid = b.pid 

where a.name is not null ...

左外和右外关联 只是主表不同,在 a,b表中有对应不上的数据时,如果左外关联 那么会把a 中的所有数据查询,b表中没有对应的关联数据时,为null,右外关联相反,全外关联 是左外和右外的和

 

 2.3 内关联

select a.* ,b.* from a join b on a.pid =b.pid 

或者 select a.*, b.* from a inner join b on a.pid = b.pid;

 

3关联删除操作:

delete detail, voucher

        from biz_st_rdrecord_detail detail

          inner join biz_st_rdrecord voucher on voucher.orgId = detail.orgId

                                            and voucher.id = detail.voucherId

        where detail.orgId = #{orgId}

          and voucher.sourceVoucherTypeId in (1000030008, 1000030009);

 

加个塞!!!!

之前做了一个需要更新大字段text类型的字段内容,内容用于关键字匹配用,现在需要增加关键字了,如何更新,这里因为数据库不止一个,需要写升级脚本,同时执行

 正常字段的update:update table set column1 = '' where id = 123;

道理一样text更新内容:update table set keyStr = concat(keyStr,'abc',' def') where id = 123;

分享到:
评论

相关推荐

    mysql语句集合包括模糊查询索引函数

    SQL语句是与MySQL交互的基础,用于创建、更新、查询和管理数据库。在这个“mysql语句集合包括模糊查询索引函数”中,我们将深入探讨SQL中的关键概念,特别是与模糊查询、索引和函数相关的知识。 首先,SQL语句主要...

    mysql中文参考手册及基础教程

    例如,`CREATE DATABASE`用于创建新的数据库,`USE`用于选择要操作的数据库,`CREATE TABLE`用于创建新表,`INSERT INTO`用于插入数据,`SELECT`用于查询数据,`UPDATE`用于更新数据,而`DELETE`用于删除数据。...

    mysql基础知识和mysql优化整理

    3. SQL语言:SQL(结构化查询语言)是操作MySQL的核心工具,包括SELECT(查询数据)、INSERT(插入数据)、UPDATE(更新数据)、DELETE(删除数据)等语句。 4. 关系模型:MySQL基于关系数据库模型,强调数据之间的...

    MySQL的数据类型和建库策略.rar

    MySQL提供了多种数据类型,包括数值类型(如整数INT、浮点数FLOAT、双精度DOUBEL)、字符串类型(如CHAR、VARCHAR、TEXT)、日期和时间类型(如DATE、TIME、DATETIME、TIMESTAMP)以及二进制类型(BLOB、VARBINARY)...

    mysql操作指南详细列表

    - 触发器:自动执行特定操作,如在数据更改时更新关联表。 - 存储过程:封装一组SQL语句,简化复杂操作。 - 视图:虚拟表,提供定制化的数据视图。 通过以上内容,你可以对MySQL有一个全面的认识,从基础操作到...

    MySQL数据库课堂笔记 + MySQL-DEMO

    2. **SQL语言**:包括SQL的四大基本操作——SELECT(查询)、INSERT(插入)、UPDATE(更新)和DELETE(删除)。详细讲解如何创建、修改和删除数据表。 3. **数据类型**:如INT、VARCHAR、DATE等,以及它们在不同...

    Mysql笔记和常用操作汇总

    这篇笔记和操作汇总将深入探讨MySQL的基本概念、安装与配置、数据类型、表的创建与管理、查询操作、事务处理、索引、视图、存储过程以及备份与恢复等关键知识点。 一、基本概念 1. 数据库:存储数据的容器,由一...

    MySQL基础PDF版

    本篇主要介绍MySQL的基础知识,涵盖数据库概述、数据操作语言、数据类型以及数据操作。 1. **数据库概述** - **什么是数据库**:数据库(Database,简称DB)是长期存储在计算机内,有组织、可共享的大量数据集合,...

    Mysql百万级以上查询优化总结

    ### MySQL 百万级以上查询优化总结 在处理大规模数据时,尤其当数据库表中的记录达到百万级别以上,查询性能优化显得尤为重要。本文将详细介绍MySQL查询优化的关键方面,包括表优化和索引优化等内容。 #### 表优化...

    mysql数据库精深.docx

    本文将深入探讨MySQL的基础知识,包括数据类型、约束条件、表的操作以及查询语句。 1. 数据类型 在MySQL中,数据类型的选择对存储效率和查询性能有很大影响。无符号(unsigned)和有符号(signed)是整数类型的一个...

    Mysql速查手册HandBood系列(By FengGe整理)

    3. 数据类型:MySQL支持多种数据类型,如数值类型(INT、FLOAT、DECIMAL)、字符串类型(VARCHAR、TEXT)、日期时间类型(DATE、TIME、DATETIME)等。 二、数据库管理 1. 创建与删除:使用CREATE DATABASE语句创建...

    21 分钟 MySQL 入门教程

    MySQL 是一种广泛使用的开源关系型数据库管理系统(RDBMS),它利用结构化查询语言(SQL)来进行数据库管理和操作。对于初学者来说,理解 MySQL 的基本概念非常重要。 - **关系型数据库**:在 MySQL 中,“关系型”...

    数据库MySQL基础知识点1

    SQL包括创建、修改、查询、更新和删除数据库对象的命令,以及对数据的增、删、改、查操作。 【MySQL环境搭建】 在Ubuntu系统中,可以通过`sudo apt-get install mysql-server`来安装MySQL服务。配置文件位于`/etc/...

    mySQL培训文档基础版.doc

    - **数据类型**:MySQL支持多种数据类型,包括数字类型(如INT、FLOAT)、字符串类型(如VARCHAR、TEXT)和日期时间类型(如DATE、TIMESTAMP)等。 - **约束**:为了保证数据的准确性和一致性,MySQL提供了主键约束...

    MYSQL培训经典教程

    MySQL支持多种数据类型,如数值类型(整数、浮点数)、字符串类型(CHAR、VARCHAR、TEXT)、日期和时间类型(DATE、TIME、DATETIME、TIMESTAMP)等。了解这些数据类型有助于正确设计数据库表结构。 四、创建与管理...

    MySQL.rar_MYSQL_Mysql入门

    16. 索引:理解索引的作用,创建和管理不同类型的索引(B-Tree、Hash、Full-text等),优化查询速度。 八、存储引擎 17. 存储引擎对比:InnoDB与MyISAM的差异,以及适用于不同场景的其他存储引擎。 九、高级特性 ...

    MySQL Word 版本笔记超级详细版本.docx

    MySQL支持多种数据类型,包括整数类型(如INT、BIGINT)、浮点数类型(如FLOAT、DOUBLE)、字符串类型(如VARCHAR、TEXT)、日期和时间类型(如DATE、TIMESTAMP)等,允许用户根据实际需求灵活设计数据表结构。...

    MySQL学习材料

    SQL命令分为多个类型,包括数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)、数据控制语言(DCL)、数据管理命令(DAC)和事务控制命令(TCC)。 DDL主要用于创建、修改和删除数据库对象,例如表、索引、视图等...

    MySql从零开始学-必知必会

    3. SQL语言:掌握SQL(Structured Query Language)的基本语法,如CREATE DATABASE和USE语句创建与选择数据库,CREATE TABLE用于定义表结构,INSERT INTO插入数据,SELECT查询数据,UPDATE更新记录,DELETE删除记录...

Global site tag (gtag.js) - Google Analytics