Mysql跨表、多表更新SQL语句总结

MySQL可以在一个SQL语句中更新多张表的记录,也可以通过多个表之间的关联关系更新某个表的数据。

假定目前有两张表goods和goods_price表,前者是保存商品的具体信息,后者是保存商品的价格,具体的表结构如下:

create table goods (

`id` int unsigned primary key auto_increment,

`goods_name` varchar(30) not null default '',

`deleted_at` int unsigned default null

)engine innodb charset utf8;

create table goods_price (

`goods_id` int unsigned not null,

`price` decimal(8,2) not null default '0.00'

)engine innodb charset utf8;

insert into goods (id,goods_name) values (1,'商品1'),(2,'商品2'),(3,'商品3'),(4,'商品4'),(5,'商品5');

insert into goods_price values (1,'5.44'),(2,'3.22'),(3,'5.55'),(4,'0.00'),(5,'4.54');

在update时使用逗号分割更新

将未删除的商品的价格*0.5,具体SQL语句如下:

UPDATE goods as g , goods_price as p SET p.price = p.price*0.5 WHERE p.goods_id = g.id AND g.deleted_at is null;

使用inner join更新数据

UPDATE goods g INNER JOIN goods_price p ON g.id=p.goods_id SET p.price=p.price*0.5 where g.deleted_at is null;

更新多个表

上面的更新语句使用另一个表的条件,更新一张表,也可以更新多个表。具体SQL语句如下:

UPDATE goods g INNER JOIN goods_price p on g.id=p.goods_id set p.price=p.price*0.5,g.deleted_at=unix_timestamp(now()) where g.is_deleted_at is null;

mysql sql 多表更新语句_MySQL跨表、多表更新SQL语句总结相关推荐

  1. mysql中表结构语句_mysql中表数据与表结构复制语句

    本文章来给各位朋友介绍一下关于在mysql中进行表数据与表结构复制语句,方法会有很多种下面我来介绍介绍,有需要了解的朋友可参考. 先来总结复制表与结的方法 一.CREATE TABLE 方法 整表复制 ...

  2. mysql中多表联合查询语句_mysql中的多表联合查询语句是什么

    mysql中的多表联合查询语句是:[select 语句1 union [union 选项] select 语句2 union [union 选项] select 语句n].多表联合查询结果是将多个se ...

  3. mysql建库建表的语句_mysql建库建表语句

    1.mysql管理数据库 1.1 创建数据库 创建数据库:CREATE DATABASE 数据库名; 显示数据库名: show database; 1.2删除数据库 删除数据库:drop databa ...

  4. mysql导出建库语句_mysql建库建表,导出表结构

    //建库: create database db_name character set =utf8; /*建立库db_name,默认字符集为utf8*/ //建表: create table tb_1 ...

  5. mysql导入多条数据语句_MySQL插入多条记录和REPLACE语句

    今天遇到样一个问题,在使用Mysql数据库时,新建一个表,并设置主键为自增长,结果当我一次执行多条插入语句时悲剧了,它竟然报错了,信息如下: 错误码: 1064 You have an error i ...

  6. delete select语句_MySQL InnoDB锁介绍及不同SQL语句分别加什么样的锁

    作者:iceman1952 链接:https://blog.csdn.net/iceman1952/article/details/85504278 本文中,我们详细介绍MySQL InnoDB存储引 ...

  7. mysql分库分区分表怎么做_mysql 分区、分表、分库分表。

    一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁 ...

  8. db2分页查询sql语句_MySQL学习(八):SQL查询语句的用法和优化

    一.概述 MySQL的性能优化可以从机器硬件,如磁盘,内存等:MySQL服务器配置,如线程数,查询缓存等:MySQL的主从分离和分库分表等:SQL语句优化等.其中SQL语句优化是与日常开发密切相关的, ...

  9. jdbc 生成建表语句_mysql数据库下建表语句

    mysql建立数据库报错You have an error in your SQL syntax; check the manual that corresponds to your MySQL se ...

  10. mysql数据库表添加字段_mysql数据库怎么给表增加一个字段?

    mysql数据库给表增加一个字段的方法:可以使用"ALTER TABLE"语句来增加一个字段,语法格式"ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条 ...

最新文章

  1. ajax和cs的关系,fetch、axios 与Ajax之间关系
  2. Nginx基础配置实例需求分析
  3. 内存泄漏java例子_一次线上Java应用内存泄漏分析实例
  4. JavaFX真实世界应用程序:欧洲电视网广播联盟
  5. n的阶乘程序python_Python程序对N阶乘的尾随零进行计数
  6. imail PHP,NT下基于邮件服务软件(IMAIL)的邮件发送程序–(本地版)-PHP教程,邮件处理...
  7. Blockathon记录——by 参赛者 张翔
  8. svn对项目权限进行管理
  9. MCP2515波特率配置
  10. NVIDIA 控制面板闪退问题解决
  11. 自建DDNS配置教程(dynu)
  12. STM32+WIFI模块(EMW3080)使用MQTT协议链接阿里云服务器
  13. bc547可以用8050代换吗_常用三极管代换型号
  14. springcloud配置中心config上线时配置文件被其他服务无法读取的两种情况
  15. Java核心知识点精心整理(全是精华)
  16. 所见所得的OFFICE功能区编辑器(自定义界面编辑)RibbonCreator
  17. Word文档 替换功能
  18. Android The emulator process for AVD XXX has terminated.
  19. 有关meta learning 要读的论文清单
  20. linux centos服务器安全初级防御

热门文章

  1. HTML5制作二级菜单(主菜单的子菜单)
  2. ET框架关于opCode的理解
  3. 互联网的SEDA高并发架构
  4. JavaScript小记——Ajax异步请求
  5. Restful 风格请求
  6. Android8.0 悬浮窗的实现
  7. ELF文件——DWARF源码解析
  8. JS实战面向对象 - 贪吃蛇
  9. Linux文件操作命令及磁盘分区与文件系统
  10. 数据库---- 增删改查