mysql delete 注意

mysql中You can‘t specify target table <tbl> for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。

例如下面这个sql: 报错

DELETE from monthxl  where dateTime in
(
	SELECT a.dateTime  from monthxl a  where a.dateTime !=(
		select max(b.dateTime) from monthxl b where a.month=b.month
	)
)  

修改如下:

DELETE FROM monthxl where dateTime in (
	select b.dateTime from ( -- 用临时表 包装一层 再删除
		SELECT a.month,a.dateTime  from monthxl a  where a.dateTime !=(
			select max(b.dateTime) from monthxl b where a.month=b.month
		)
         ) b
)

  

时间: 2024-10-25 02:00:28

mysql delete 注意的相关文章

MySQL DELETE语句和TRUNCATE TABLE语句的区别

MySQL DELETE语句和TRUNCATE TABLE语句的区别 2010-10-08 16:05 佚名 互联网 字号:T | T 在MySQL数据库中,DELETE语句和TRUNCATE TABLE语句都可以用来删除数据,但是这两种语句还是有着其区别的,下文就为您介绍这二者的差别所在. AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载! MySQL DELETE语句和TRUNCATE TABLE语句功能相似,但是二者究竟有何区别呢?下文就将为您分析MySQL DELETE语

mysql delete from table 失败

SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; TRUNCATE TABLE nametruncate语句,是清空表中的内容,包括自增主键的信息.truncate表后,表的主键就会重新从1开始. check the manual that corresponds to your Mysql server version for the right syntax to y

MySQL DELETE

MySQL DELETE 语句 你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录. 你可以在mysql>命令提示符或PHP脚本中执行该命令. 语法 以下是SQL DELETE 语句从MySQL数据表中删除数据的通用语法: DELETE FROM table_name [WHERE Clause] 如果没有指定 WHERE 子句,MySQL表中的所有记录将被删除. 你可以在 WHERE 子句中指定任何条件 您可以在单个表中一次性删除记录. 当你想删除数据表中指

mysql delete 别名问题 (转)

mysql delete 别名问题 - 流星焰的日志 - 网易博客 http://wzl3585493.blog.163.com/blog/static/7615611020126188377970/ delete from student s where s.id in (1,2,3);(执行失败) select s.* from student s where s.id in (1,2,3);(执行成功) 结果处理:       1.不用别名 如: delete from student w

雷林鹏分享:MySQL DELETE 语句

你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录. 你可以在 mysql> 命令提示符或 PHP 脚本中执行该命令. 语法 以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法: DELETE FROM table_name [WHERE Clause] 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除. 你可以在 WHERE 子句中指定任何条件 您可以在单个表中一次性删除记录. 当你想删除数据表中指定的记录时 WH

Python MySQL Delete

章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python MySQL Where Python MySQL Order By Python MySQL Delete Python MySQL 删除表 Python MySQL Update Python MySQL Limit Python MySQL Join 删除记录 可以使用"DELETE FROM&q

mysql delete删除记录数据库空间不减少问题解决方法

记得在中学时学计算机时老师就告诉我delete删除记录只是给数据库中的记录加一个删除标识了,这样数据库空间并不是减少了,当时没想这么多,昨天发现一个数据库利用delete 删除之后容量没变,后来百度了一下发现了下面一站长分享的文件,写得非常的不错,整理一下给各位参考. 今天空间商告诉我数据库空间满了,检查了一下,发现网站用户行为记录数据表竟然占了20多MB.积累了半年了,该删除释放一下空间了.果断delete之后发现数据库空间竟然没少,虽然数据记录数是零. 原来这是因为删除操作后在数据文件中留下

mysql delete无法释放空间用分区代替

随着数据库数据量的变大,如果要清除某个月的数据,用delete命令删除,mysql不会释放空间,必须整理碎片或者用修改引擎来重建表,才会释放空间,但是由于数据量很大,每次重建都得10-12小时的时间,太长了,想到了用mysql分区来解决这种弊病,通过删除分区,可以直接删除数据文件,那当然也可以释放空间. 分区的相关知识我就先不讲了,就说两点 分区字段不要有空值,因为空值会默认到无用分区中,这样查询会多扫描分区. 查询条件最好要带着分区字段,不然性能会很低,需要在所有分区里扫一遍. 添加分区脚本

mysql delete数据 空间占用不减少的解决办法

今天空间商告诉我数据库空间满了,检查了一下,发现网站用户行为记录数据表竟然占了20多MB.积累了半年了,该删除释放一下空间了.果断delete之后发现数据库空间竟然没少,虽然数据记录数是零. 原来这是因为删除操作后在数据文件中留下碎片所致.DELETE只是将数据标识位删除,并没有整理数据文件,当插入新数据后,会再次使用这些被置为删除标识的记录空间.另外实际操作过程中还发现这个问题还存在两种情况. (1)当DELETE后面跟条件的时候,则就会出现这个问题.如: delete from table_