mysql单表更新及多表更新


        历经Oracle,MS SQL Server,到现在的MySQL,跨越了3种资料库的学习与研究,现在对于MySQL的表更新,单表字段更新与其他类型的RDBMS资料库一样,多表级联更新还是有些区别的,不过研究过后,发现还是蛮简单的。

UPDATE 语句用于中修改数据库表中的数据。

更新数据库中的数据

UPDATE 语句用于在数据库表中修改数据。

语法

UPDATE table_name
SET column_name = new_value
WHERE column_name = some_value

注释:SQL 对大小写不敏感。UPDATE 与 update 等效。


这里,关联的两张表为:tablename1、tablename2,如果需要进行关联更新tablename1里面的字段,

[html] view plain copy
  1. update tablename1 a,tablename2 b   
[html] view plain copy
  1. set a.grouping=b.grouping,a.size=b.size,a.description=b.description  
  2. where a.catalog=b.catalog and a.`schema`=b.`schema` and a.name=b.name  
当然多表更新,还有其他的方法,具体方法说明如下:

方法一:直接更新,同上面一样:

  1. UPDATE product p, productPrice pp  
  2. SET pp.price = pp.price * 0.8  
  3. WHERE p.productId = pp.productId  
  4. AND p.dateCreated < '2014-01-01'  

方法二:使用inner Join,然后更新:

  1. UPDATE product p  
  2. INNER JOIN productPrice pp  
  3. ON p.productId = pp.productId  
  4. SET pp.price = pp.price * 0.8  
  5. WHERE p.dateCreated < '2014-01-01'  

方法三:使用left join,然后更新:
  1. UPDATE product p  
  2. LEFT JOIN productPrice pp  
  3. ON p.productId = pp.productId  
  4. SET p.deleted = 1  
  5. WHERE pp.productId IS null  

其实MySQL还可以同时更新两张表的数据的,如下:
  1. UPDATE product p  
  2. INNER JOIN productPrice pp  
  3. ON p.productId = pp.productId  
  4. SET pp.price = pp.price * 0.8,  
  5. p.dateUpdate = CURDATE()  
  6. WHERE p.dateCreated < '2014-01-01' 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值