IT行业资讯

当前位置: 首页/新闻•资讯/IT行业资讯/正文

Mysql跨表更新

发布时间:2013-7-17 来源:小编

  MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

  假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price;另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价格字段的80%。

  在Mysql中我们有几种手段可以做到这一点,一种是update table1 t1, table2 ts ...的方式:

  代码如下:

  UPDATE product p, productPrice pp

  SET pp.price = pp.price * 0.8

  WHERE p.productId = pp.productId

  AND p.dateCreated < '2004-01-01'

  另外一种方法是使用inner join然后更新:

  代码如下:

  UPDATE product p

  INNER JOIN productPrice pp

  ON p.productId = pp.productId

  SET pp.price = pp.price * 0.8

  WHERE p.dateCreated < '2004-01-01'

  另外我们也可以使用left outer join来做多表update,比方说如果ProductPrice表中没有产品价格记录的话,将Product表的isDeleted字段置为1,如下sql语句:

  代码如下:

  UPDATE product p

  LEFT JOIN productPrice pp

  ON p.productId = pp.productId

  SET p.deleted = 1

  WHERE pp.productId IS null

  另外,上面的几个例子都是两张表之间做关联,但是只更新一张表中的记录,其实是可以同时更新两张表的,如下sql:

  代码如下:

  UPDATE product p

  INNER JOIN productPrice pp

  ON p.productId = pp.productId

  SET pp.price = pp.price * 0.8,

  p.dateUpdate = CURDATE()

  WHERE p.dateCreated < '2004-01-01'

  两张表做关联,更新了ProductPrice表的price字段和Product表字段的dateUpdate两个字段。

  更多内容尽在:www.commernet.cn

公司简介 - 案例展示 - 联系我们

我们为您提供:软件定制、软件开发、网站建设、IT 外包、系统集成、品牌策划、合肥软件开发等服务
地址:合肥市 高新区 天智路5号 同创科技园5号楼4层   电话:0551-65355812   传真:0551-65355811
版权所有:安徽凯美耐信息技术有限公司    皖ICP备14000533号-1     皖公网安备 34019202000960号