`

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

);

 

    关联表更新例子

   

UPDATE erp$act$activity_sku acts JOIN (
	SELECT p.brand_id, p.mft_id, pc.category_id, ps.sku_number FROM erp$pro$product  p
	JOIN erp$pro$product_sku ps ON ps.product_id = p.product_id
	JOIN erp$pro$product_category pc ON p.product_id = pc.product_id
	JOIN erp$act$activity_sku  ask ON ask.sku_number = ps.sku_number
	WHERE ask.sku_number IS NOT NULL
) t ON acts.sku_number = t.sku_number
SET acts.brand_id = t.brand_id , acts.mft_id = t.mft_id, acts.category_id = t.category_id

 

 

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

 

分享到:
评论

相关推荐

    mysql级联更新和级联删除

    mysql级联更新和级联删除,区分有级联和没级联操作的区别之处

    卸载mysql方法-删除注册码

    mysql 如果卸载不彻底,再次安装时会出现问题,附件是彻底卸载mysql方法-删除注册码

    MySQL DML - 更新和删除数据.md

    此Markdown文档提供了MySQL...通过阅读和实践这个文档,您将能够更好地掌握MySQL数据库中更新和删除数据的操作方法。无论是初学者还是有经验的用户,都可以通过本文档来加深对MySQL DML更新和删除操作的理解和应用。

    彻底删除mysql数据库(压缩版)

    mysql压缩版彻底删除方法,有图文介绍!由于安装某个项目的执行文件,提示要卸载MySQL以便它自身MySQL安装,然后我禁用了MYSQL服务,再把这个文件夹删除后,发现还是提示请卸载MYSQL服务。

    MySQL删除重复记录

    MySQL删除重复记录方法。

    MySQL删除数据库恢复方法分享.pdf

    MySQL删除数据库恢复方法分享.pdfMySQL删除数据库恢复方法分享.pdfMySQL删除数据库恢复方法分享.pdfMySQL删除数据库恢复方法分享.pdfMySQL删除数据库恢复方法分享.pdfMySQL删除数据库恢复方法分享.pdf

    Linux下彻底删除Mysql 8.0服务的方法

    观看本文前最好有一定的Linux命令基础,具体为centos7.3环境中清除使用yum安装的Mysql 卸载前请先关闭Mysql服务 ...使用过rpm -ev +对应文件名 删除上面Mysql对应结果 rpm -ev mysql-community-

    如何完全干净地删除MySQL数据库

    如何完全干净地删除MySQL数据库

    QT的mysql数据库操作类

    (5)更新数据方法:db-&gt;update(dataList); (6)查一条数据方法:db-&gt;find(); (7)查询多条数据方法:db-&gt;select(); (8)删除一条数据:db-&gt;del(); (9)清空一个数据表所有数据:db-&gt;clear(); (10)统计数量...

    MYSQL

    7.11 DELETE (删除)句法 7.12 SELECT (精选)句法 7.13 JOIN (联接)句法 7.14 INSERT (插入)句法 7.15 REPLACE (替换)句法 7.16 LOAD DATA INFILE (装载数据到文件)句法 7.17 UPDATE ...

    mysql索引导出删除

    mysql索引导出删除

    MySQL中利用外键实现级联删除、更新

    在数据库MySQL中利用外键实现级联删除、更新等方面的内容。有兴趣可以看看。。

    使用binlog日志恢复MySQL数据库删除数据的方法

    本文主要通过实际操作说明对binlog日志恢复MySQL数据库删除数据的方法进行说明,内容主要包括MySQL数据库binlog日志查询、恢复等相关介绍,希望对大家在工作及生活中遇到的此类问题有所帮助,如需操作指导,可留言!

    mysql使用方法111

    mysql的使用方法,基本的命令大全,创建库,删除

    MySQL DELETE 删除语句加锁分析1

    1.前言在MySQL的使用过程中,对SQL加锁的类型经常感到疑惑,这让死锁分析也变得举步维艰。因此需要将MySQL的各种SQL在各个隔离级别下加的锁进行分析,以

    mysql删除日志方法.docx

    mysql的LOG日志占用空间如果比较大的话,需要进行清理,整理了日志清理的四种方法,方便大家安全清理日志

    MySQL的删除步骤

    MySQL的删除步骤详细到注册表的删除。注意数据库中表的保存

    mysql误删除frm和ibd文件的恢复方法.txt

    Mysql数据库由于断电重启或者手动误删frm和ibd文件导致表创建不成功。亲测可以重新创建成功

    Java连接MySql数据库,并且实现插入、删除、更新、选择操作.pdf

    Java连接MySql数据库,并且实现插入、删除、更新、选择操作.pdf

    Mysql数据库误删恢复方法.docx

    Mysql数据库忘记备份数据库,通过.frm和.ibd文件恢复数据的方法,最后只能通过恢复工具找到数据库的.frm和.ibd文件, 整个恢复过程其实可以总结为下面几步: (1):恢复mas2020数据库文件 (2):恢复表结构 ...

Global site tag (gtag.js) - Google Analytics