`

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级联更新与级联删除详解 在数据库设计中,外键约束是维护数据完整性和一致性的重要手段之一。MySQL的InnoDB存储引擎支持多种不同的处理外键的方式,包括级联更新(Cascade Update)和级联删除(Cascade ...

    MYSQL更新密码的不同方式

    除了上述关于密码更新的方法外,还有一些常用的 MySQL 命令,如创建数据库、导入/导出数据等: 1. **创建数据库**: - 使用 `MySQL -u root` 命令连接 MySQL 服务器。 - 使用 `create database ttt;` 命令创建名...

    MySql MySql使用方法 Mysql例子

    插入数据使用`INSERT INTO`语句,更新数据用`UPDATE`,删除数据用`DELETE`。 4. SQL查询语言基础 - `SELECT`:用于从表中检索数据,如`SELECT * FROM users;`获取所有用户信息。 - `WHERE`:过滤结果,如`SELECT...

    mysql删除日志方法.docx

    - 在删除日志文件之后,需要手动更新 `mysql-bin.index` 文件,删除对应的日志文件记录。 #### 方法三:设置过期天数(expire_logs_days) **参数查看与调整**: ```sql mysql&gt; show variables like 'expire_logs_...

    MySQL删除表数据 MySQL清空表命令 3种方法

    在MySQL数据库管理中,删除表数据是常见的操作,这可能是为了清理旧数据、测试环境的重置或数据更新。本文将详细介绍三种不同的方法来删除MySQL中的表数据,帮助你更有效地管理数据库。 ### 方法一:TRUNCATE TABLE...

    Java实现批量向mysql写入数据的方法

    3. mysql数据库的基本操作:mysql数据库提供了基本的数据操作,如新增、删除、修改和查询等操作。通过使用JDBC,可以实现这些基本操作,例如在本文中,我们使用了insert into语句向mysql数据库中插入数据。 4. Java...

    MYSQL插入中文解决方法

    MYSQL中的SQL语句包括数据库创建、表创建、数据插入、数据查询、数据更新、数据删除等。 MYSQL中的权限控制也非常重要,掌握这些权限控制可以帮助我们更好地管理和维护我们的数据库。MYSQL中的权限控制包括创建用户...

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

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

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

    ### 如何完全干净地删除MySQL数据库 在进行数据库管理或迁移的过程中,有时候我们需要彻底清除旧的MySQL数据库系统,以便重新安装或切换到其他版本。本文将详细介绍如何彻底删除MySQL数据库,确保没有任何残留文件...

    自己总结 mysql服务器连接不成功之解决方法

    4. 确保MySQL目录对System用户有适当的权限,删除 `%WINDOWS%/my.ini` 文件,检查`c:/my.cnf`的配置是否正确。 总之,解决MySQL连接问题需要仔细排查服务状态、权限设置、配置文件内容和数据文件的兼容性。在处理...

    mysql一些常用命令

    ### MySQL常用命令详解 ...以上就是关于MySQL常用命令的一些详细介绍,这些命令可以帮助数据库管理员高效地完成日常维护工作,如备份、恢复、用户管理等。掌握这些命令对于使用MySQL数据库至关重要。

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

    Java 连接 MySql 数据库,并实现插入、删除、更新、选择操作 Java 连接 MySql 数据库是 Java 程序员中非常常见的一种操作。通过使用 JDBC(Java Database Connectivity,Java 数据库连接)驱动程序,可以轻松地连接...

    MySQL常见问题及解决方法

    然而,在使用 MySQL 过程中,用户经常会遇到一些常见的问题,本文将对这些问题进行总结和解决。 一、 MySQL 登录问题 Q: 如何登录 MySQL? 使用 mysql 提供的客户端工具登录,命令格式为:`#PATH_TO_MYSQL/bin/...

    通过SQL Server操作MySQL的步骤和方法

    "SQL Server 操作 MySQL 的步骤和方法" 在多种数据库环境下,经常会遇见在不同数据库之间转换数据和互相进行操作的情况。下面是使用 SQL Server 操作 MySQL 的步骤和方法的详细说明: 1. 操作前的准备 在 SQL ...

    mysql 重置数据库密码方法

    最后,打开 MySQL 目录下的 my.ini 文件,删除最后一行的“skip-grant-tables”,保存并关闭文件。重启 MySQL 服务。在命令行中输入“mysql -uroot -prootadmin”,问题搞定! 小结 MySQL 数据库密码重置是一个...

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

    "MySQL 中利用外键实现级联删除、更新" 在 MySQL 中,外键是指在一个表中的一列或多列,引用另一个表中的主键或唯一索引。外键可以强制实施数据的一致性和完整性,使得数据更加可靠。外键在 MySQL 中的实现主要是...

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

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

    c#链接mysql方法

    根据给定的信息,本文将详细解释如何在C#中连接MySQL数据库,并进行基本的数据操作,如查询、插入、更新和删除等。 ### C#连接MySQL的方法 #### 1. 引入必要的命名空间 要在C#中连接MySQL,首先需要引入相关的...

Global site tag (gtag.js) - Google Analytics