Heim > Datenbank > MySQL-Tutorial > MySQL 常用的UPDATE操作_MySQL

MySQL 常用的UPDATE操作_MySQL

WBOY
Freigeben: 2016-05-27 13:46:38
Original
1046 Leute haben es durchsucht

概述  

 

测试环境: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;

MySQL 常用的UPDATE操作_MySQL

 

 单表更新操作

 

UPDATE product

SET price='20.00',type=0 

WHERE proID=2;

MySQL 常用的UPDATE操作_MySQL

 

 关联更新操作 

 

UPDATE producttype,product

SET producttype.amount=product.price

where product.TYPE = producttype.ID AND product.TYPE=1;

MySQL 常用的UPDATE操作_MySQL

 

 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);

 

MySQL 常用的UPDATE操作_MySQL

注意:大家注意看到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,如果之前有事情其它数据库产品的习惯在这里要注意了。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage