• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL的一些更新、剔除方法_mysql

mysql 搞代码 7年前 (2018-06-07) 179次浏览 已收录 0个评论

mysql的一些更新、删除方法

1. 关联表更新

mysql关联多表进行update更新操作

 

UPDATE Track INNER JOIN MV ON Track.trkid=MV.mvid SET Track.is_show=MV.is_show WHERE trkid<6

 等同于

 

 

UPDATE Track,MV SET Track.is_show=MV.is_show WHERE Track.trkid=MV.mvid and trkid<6

 

 

  实例:

   

UPDATE erp$pro$category_mapping cm JOIN  erp$pro$category_operation co ON cm.category_operation_id = co.category_id SET cm.STATUS = 2 WHERE (co.category_path LIKE '12/%' OR co.category_id = 12) ;

 

 

参考文章:http://blog.sina.com.cn/s/blog_4c197d420101aer2.html

 

2. 关联表删除

 

DELETE cm FROM erp$pro$category_mapping cm JOIN erp$pro$category_operation cp WHERE cp.channel_id = 11 AND  cp.LEVEL <> 1;

 

 

3. 更新条件where in条件中有子查询时的写法

 

UPDATE erp$pro$sku_channel_relation SET STATUS = 1 WHERE product_sku_id IN (    SELECT product_sku_id     FROM (  --(where条件有子查询无法更新的解决办法) SELECT DISTINCT t.product_sku_id FROM erp$pro$product_sku t JOIN erp$pro$product p ON t.product_id = p.product_id WHERE t.STATUS = 1  AND p.is_m2b_product IS  NULL AND t.sku_type >= 0 AND t.is_gift = 0 AND t.product_sku_id  IN (SELECT product_sku_id FROM erp$pro$sku_channel_relation  WHERE channel_id = 9 AND STATUS = 2)     ) tt ) AND channel_id = 9 AND STATUS = 2; 

 

 

最开始我定成如下SQL时总是报Error Code:1093错误:

 

UPDATE erp$pro$sku_channel_relation SET STATUS = 1 WHERE product_sku_id IN (    SELECT DISTINCT t.product_sku_id FROM erp$pro$product_sku t JOIN erp$pro$product p ON t.product_id = p.product_id WHERE t.STATUS = 1  AND p.is_m2b_product IS  NULL AND t.sku_type >= 0 AND t.is_gift = 0 AND t.product_sku_id  IN (SELECT product_sku_id FROM erp$pro$sku_channel_relation  WHERE channel_id = 9 AND STATUS = 2)    ) AND channel_id = 9 AND STATUS = 2; 

 

 

4. 关联表更新条件中有子查询时写法

 

 

UPDATE  erp$pro$sku_channel_relation a JOIN erp$pro$product_sku t ON a.product_sku_id=t.product_sku_id JOIN erp$pro$product p ON t.product_id = p.product_id  SET a.STATUS = 1 WHERE a.channel_id=9 AND a.STATUS = 2 AND t.STATUS = 1  AND p.is_m2b_product IS  NULL AND t.sku_type >= 0 AND t.is_gift = 0  AND t.product_sku_id  IN ( SELECT product_sku_id FROM ( --In 查询方式的解决办法 SELECT product_sku_id FROM erp$pro$sku_channel_relation  WHERE channel_id = 9 AND STATUS = 2 ) tt ); 

 最开始的写法,没有在子查询外再包一层查询的时候总是报Error Code:1093错误:

 

 

UPDATE  erp$pro$sku_channel_relation a JOIN erp$pro$product_sku t ON a.product_sku_id=t.product_sku_id JOIN erp$pro$product p ON t.product_id = p.product_id  SET a.STATUS = 1 WHERE a.channel_id=9 AND a.STATUS = 2 AND t.STATUS = 1  AND p.is_m2b_product IS  NULL AND t.sku_type >= 0 AND t.is_gift = 0  AND t.product_sku_id  IN (  SELECT product_sku_id FROM erp$pro$sku_channel_relation  WHERE channel_id = 9 AND STATUS = 2  ); 

 

 

MySQL 1093错误参考文章:http://www.2cto.com/database/201308/236323.html

 

欢迎大家阅读《MySQL的一些更新、剔除方法_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL的一些更新、剔除方法_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址