首页 > 数据库技术 > 详细

MySQL 常用的UPDATE操作

时间:2015-12-02 20:49:43      阅读:303      评论:0      收藏:0      [点我收藏+]

标签: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行,没有查询无关联的行。

总结

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

 

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

 

备注:

    作者:pursuer.chen

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

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

《欢迎交流讨论》

 

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

MySQL 常用的UPDATE操作

原文:http://www.cnblogs.com/chenmh/p/5013606.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!