标签:UPDATE

概述

测试环境:mysql 5.6.21

步骤

创建测试表

CREATE TABLE `product` (
`proID` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品表主键',
`price` decimal(10,2) NOT NULL COMMENT '商品价格',
`type` int(11) NOT NULL COMMENT '商品类别(0生鲜,1食品,2生活)',
`dtime` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`proID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='商品表'; CREATE TABLE `producttype` (
`ID` int(11) NOT NULL COMMENT '商品类别(0生鲜,1食品,2生活)',
`amount` int(11) COMMENT '每种类别商品总金额',
UNIQUE KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品类别资金汇总表'

插入测试数据

INSERT INTO product(price,type,dtime) VALUES(10.00,0,now()),(10.00,1,now()),(10.00,1,now()),(20.00,2,now()),(30.00,3,now());

INSERT INTO producttype(ID) VALUES(1),(2),(3);
SELECT * FROM  product;

SELECT * FROM producttype;

 单表更新操作

UPDATE product
SET price='20.00',type=0
WHERE proID=2;

 关联更新操作 

UPDATE producttype,product
SET producttype.amount=product.price
where product.TYPE = producttype.ID AND product.TYPE=1;

 1.查询所有字段

INSERT INTO producttype(ID) VALUES(4);
UPDATE producttype
SET producttype.amount= (SELECT ifnull(SUM(product.price),0.00) FROM product WHERE product.TYPE = producttype.ID GROUP BY product.TYPE);

注意:大家注意看到rows matched:4,表示符合条件的记录是4条,实际更新了三条,关联语句默认不去判断里面的关联的实际行。

2.只查询需要更新的字段

UPDATE producttype
SET amount=null;
UPDATE producttype,product
SET producttype.amount=
(SELECT ifnull(SUM(product.price),0.00)
FROM product
WHERE product.TYPE = producttype.ID
GROUP BY product.TYPE)
where product.TYPE = producttype.ID;

改用下面这种方法:Rows matched:3,查询到了符合条件的行是3行,没有查询无关联的行。

3.别名更新

update a tb1, b tb2
set tb1.num=tb1.num+tb2.num
where tb1.id=tb2.id

总结

mysql的update的关联操作在5.6中后面不能直接接FROM语句,只能UPDATE 所有的连接表然后WHERE,如果之前有事情其它数据库产品的习惯在这里要注意了。

 文章如果对大家有帮助,请帮忙推荐,谢谢!!!

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。

《欢迎交流讨论》

---恢复内容结束---

MySQL 常用的UPDATE操作的更多相关文章

  1. MySQL常用命令基础操作

    MySQL启动与更改密码 mysql启动基本原理说明: /etc/init.d/mysqld是一个shell启动脚本,启动后最终会调用,mysqld_safe脚本,最后调用mysqld服务启动mysq ...

  2. MySQL常用命令及操作

    1.登录与退出    1)登录        windows下直接在DOS命令窗口用root用户登录输入mysql回车;        linux下输入使用PUTTY连接mysql的服务器,然后输入: ...

  3. mysql常用命令行操作

    1.linux下彻底卸载mysql sudo rm /var/lib/mysql/ -Rsudo rm /etc/mysql/ -R sudo apt-get autoremove mysql* -- ...

  4. Mysql常用基础命令操作

    常见操作命令:1.连接Mysql (客户端工具NaviCat.phpMyAdmin.MySQL-Front)格式: mysql -h 主机地址 -u用户名 -p用户密码(1)连接到本机上的MYSQL. ...

  5. mysql常用命令行操作(一):登陆、退出、查看端口、修改密码、刷新

    一.登陆和退出mysql mysql -u root -p # 登陆exit # 退出 二.查看当前mysql的端口号 show global variables like 'port'; 三.查看用 ...

  6. mysql常用命令行操作(二):表和库的操作、引擎、聚合函数

    一.查看.创建.删除数据库 create database library default character set utf8 collate utf8_general_ci; # 创建数据库并设置 ...

  7. MySQL常用的sql操作

    1.日期时间格式化 2.日期时间格式化 3.查询第11到第15条数据 ,5//落过多少,取出多少. 4.字符串转日期 select str_to_date('2016-01-02', '%Y-%m-% ...

  8. mysql常用操作语句

    mysql常用操作语句 1.mysql -u root -p   2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...

  9. 学会使用简单的 MySQL 常用操作

    一.MySQL 数据库的基本安装 # yum 安装 mysql 版本:5.1.73 [root@mysql ~]# yum install -y mysql-server mysql # 启动 MyS ...

随机推荐

  1. UWP学习记录5-设计和UI之控件和模式2

    UWP学习记录5-设计和UI之控件和模式2 1.应用栏和命令栏 CommandBar 控件是一款通用.灵活.轻型的控件,可显示复杂内容(如图像或文本块)以及简单的命令(如 AppBarButton.A ...

  2. Python-类的属性

    类的属性,可以称为成员变量 类的方法,可以称为成员函数   对象的创建 - 创建对象的过程称之为实例化:当一个对象被创建后,包含三个方面的特性:对象句柄.属性和方法. - 句柄用于区分不同的对象(实例 ...

  3. svn: how to set the executable bit on a file?

    http://stackoverflow.com/questions/17846551/svn-how-to-set-the-executable-bit-on-a-file svn uses pro ...

  4. java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)

    此错误是由于版本造成的,如果使用mybatis3.4版本以上,配置拦截器规则应增加Intger @Intercepts({ @Signature( type= StatementHandler.cla ...

  5. BZOJ1129 : [POI2008]Per

    枚举LCP,假设前$i-1$个都相同.那么后面$n-i$个数可以随意排列,第$i$个位置可以填的方案数为后面小于$a_i$的数字个数,树状数组维护. 同时为了保证本质不同,方案数需要除以每个数字的个数 ...

  6. ECF R9(632E) & FFT

    Description: 上一篇blog. Solution: 同样我们可以用fft来做...就像上次写的那道3-idoit一样,对a做k次卷积就好了. 同样有许多需要注意的地方:我们只是判断可行性, ...

  7. [ACM训练] 算法初级 之 搜索算法 之 深度优先算法DFS (POJ 2251+2488+3083+3009+1321)

    对于深度优先算法,第一个直观的想法是只要是要求输出最短情况的详细步骤的题目基本上都要使用深度优先来解决.比较常见的题目类型比如寻路等,可以结合相关的经典算法进行分析. 常用步骤: 第一道题目:Dung ...

  8. nodejs redis 发布订阅机制封装

    最近项目使用redis,对publish 和 subscribe的使用进行了了解,并进行了封装. var config = require('../config/config'); var log = ...

  9. linux下QT程序输出乱码解决方法

    参考文章:http://blog.csdn.net/jiang1013nan/article/details/6667871 http://my.oschina.net/zjlaobusi/blog/ ...

  10. 在linux中设置静态ip地址

    在linux中设置静态ip地址1.在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0 2.开始编辑,填写ip地址.子网掩码.网关.DNS等[root ...