标签: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. 移动端 css/html (box-flex)自适应、等比布局

    移动端 css/html (box-flex)自适应.等比布局 对于移动端自适应的一种布局方式. <!DOCTYPE html> <html> <head> < ...

  2. Open 语法的使用

    我们通常会需要在命令中,打开文件输入信息,在python中我们就会使用open语法,进行此方面的操作.详细方式如下:#Python open 函数# 作用:打开一个文件# 语法:open(file[, ...

  3. URAL 2089 Experienced coach Twosat

    Description Misha trains several ACM teams at the university. He is an experienced coach, and he doe ...

  4. PHP CI框架 result()详解

    该方法执行成功返回一个对象数组,失败则返回一个空数组. 一般情况下,我们使用下面的方法遍历结果,代码就像这样: $query = $this->db->query("要执行的 S ...

  5. Thread与Runnable的一个小陷阱

    Java里面运行一个线程可以通过继承Thread的方式,也可以通过实现Runnable的接口来实现,那么两者能不能混用呢,比如以下的例子: public class JavaTest extends ...

  6. 测试...外部指针访问private

    #include<iostream> using namespace std; class A{ public: int* getPointer(){ return &m; } v ...

  7. gradle下载地址

    gradle下载:http://services.gradle.org/distributions

  8. 顺序表(SeqList)

    ---恢复内容开始--- 数据结构在上周结课,接下来就是为期几周的上机实验,说是实验课我感觉还不如不上.几乎每个人都是按着老师的要求把书上的代码打一遍,变都不变.一遍以后连自己打的什么都不知道. 与其 ...

  9. ANGULAR $HTTP请求【转】

    angular使用post.get向后台传参的问题 一.问题的来源 我们都知道向后台传参可以使用get.put,其形式就类似于name=jyy&id=001.但是在ng中我却发现使用$http ...

  10. Angularjs ng-if和ng-show的区别

    ng-if:判断条件,为true时向html中插入节点,否则从html中移除节点: ng-show: 简单的显示和隐藏(display) 坑点:ng-if会创建一个新的作用域(scope),如果内部元 ...