关于mysql delete的问题小结

由于mysql数据库的相关内部问题

导致delete from table where col not in (select col from table group by xx)

会提示报错

我们要做的是

代码如下:

create table tmp selete col from table group by xx;
delete from table where col not in (select col from tmp);
drop table tmp;

今天,在开发自己的项目中需要把项目原来的数据导入到新的系统中,在这个过程中会产生部分脏数据。

我们需要把这部分脏数据删除到,在删除的过程中我写的delete sql语句不能执行不知道为什么,可以同样的语句执行

select 是没有问题的

如: 
delete from student a where a.id in (1,2);()
select a.* from student a where a.id in (1,2);()
这是什么原因了呢?
结果处理:

      delete 在写操作一张表的时候 不用别名操作成功!

如:

delete from student where id in (1,2);()
我使用mysql版本:5.1.30-community-log

这是在开发中遇到的一个小问题,积累起来。

(0)

相关推荐

  • MySQL删除数据Delete与Truncate语句使用比较

    空mysqll表内容常见的有两种方法:一种delete,一种是truncate . 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容.效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据. 其语法结构为: 复制代码 代码如下: TRUNCATE [TABLE] tbl_name 这里简单的给出个示例, 我想删除 friends 表中所有的记录,可以使用如下语句: 复

  • mysql之delete删除记录后数据库大小不变

    当DELETE后面跟条件的时候,则就会出现这个问题 delete from table_name where 条件 删除数据后,数据表占用的空间大小不会变. 不跟条件直接delete的时候. delete from table_name 清除了数据,同时数据表的空间也会变为0 如果已经删除了表数据的很大一部分,或者有很多变化和变长表行(VARCHAR表,VARBINARY.BLOB或文本列)进行了更改,因为删除操作后在数据文件中留下碎片所致.DELETE只是将数据标识位删除,并没有整理数据文件,

  • MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解

    MySQL数据库insert和update语句引:用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句.言外之意,就是对数据进行修改.在标准的SQL中有3个语句,它们是INSERT.UPDATE以及DELETE. 用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句.言外之意,就 是对数据进行修改.在标准的SQL中有3个语句,它们是INSERT.UP

  • mysql delete limit 使用方法详解

    mysql delete limit优点: 用于DELETE的MySQL唯一的LIMIT row_count选项用于告知服务器在控制命令被返回到客户端前被删除的行的最大值.本选项用于确保一个DELETE语句不会占用过多的时间.您可以只重复DELETE语句,直到相关行的数目少于LIMIT值为止. 如果DELETE语句包括一个ORDER BY子句,则各行按照子句中指定的顺序进行删除.此子句只在与LIMIT联用是才起作用.例如,以下子句用于查找与WHERE子句对应的行,使用timestamp_colu

  • 关于mysql delete的问题小结

    由于mysql数据库的相关内部问题 导致delete from table where col not in (select col from table group by xx) 会提示报错 我们要做的是 复制代码 代码如下: create table tmp selete col from table group by xx; delete from table where col not in (select col from tmp); drop table tmp; 今天,在开发自己的

  • MySQL 数据库的监控方式小结

    目录 1.连接数(Connects) 2.缓存(bufferCache) 3.锁(lock) 4.慢SQL 5.statement 6.吞吐(Database throughputs) 7.数据库参数(serverconfig) 8.慢 SQL排查步骤 9.总结 对于当前数据库的监控方式有很多,分为数据库自带.商用.开源三大类,每一种都有各自的特色: 而对于 mysql 数据库由于其有很高的社区活跃度,监控方式更是多种多样,不管哪种监控方式最核心的就是监控数据,获取得到全面的监控数据后就是灵活的

  • MySQL DELETE语法使用详细解析

    以下的文章主要描述的是MySQL DELETE语法的详细解析,首先我们是从单表语法与多表语法的示例开始的,假如你对MySQL DELETE语法的相关内容十分感兴趣的话,你就可以浏览以下的文章对其有个更好的了解. 单表语法: 复制代码 代码如下: DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name   [WHERE where_definition]   [ORDER BY ...]   [LIMIT row_count] 多表语法: 复制代码

  • MySQL数据库管理常用命令小结

    MySQL数据库的管理对数据库来说是至关重要的一个环节,要想懂得MySQL数据库的管理必须从基础做起,只有先知道了数据库管理时使用的命令,实际操作起来就容易很多.下面就是MySQL数据库管理常用命令: 安装利用RPM包安装Mysql,设置TCP 3306端口的iptables. root密码管理设置root用户的密码mysqladmin -uroot password 'password'. 修改root用户的密码mysqladmin -uroot -p password 'password'.

  • mysql delete 多表连接删除功能

    单个表的删除: DELETE FROM tableName WHERE columnName = value; 删除表内的所有行: 即:保留表的结构.属性.索引 DELETE FROM tablename; DELETE * FROM tablename; 删除同一张表内的所有内容(删除数据.表结构) TRUNCATE customer; 无法报告删除了几行,且只能用于单一表 多表连接删除: DELETE orders,itrms FROM orders,items WHERE orders.u

  • MySql存储过程学习知识小结

    什么是存储过程: 存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了. 存储过程的好处: 1.由于数据库执行动作时,是先编译后执行的.然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高. 2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率. 3.通过存储过程能够使没有权限的

  • mybatis mysql delete in操作只能删除第一条数据的方法

    出现的Bug 如图,我开始复制delete语句和参数到数据库执行,删除两条数据,但是后台执行确只删除一条数据,当时表示一脸懵逼  分析原因 分析原因 如图,正确的参数传值应该是这样的,聪明的同学,应该就知道哪里错了 解决问题  解决问题 我就不贴开始的代码了,直接贴解决bug的代码 mybatis中的代码 <!-- 批量删除--> <delete id="deleteByIds" parameterType="int[]"> <![CD

  • MySQL 字符串截取相关函数小结

    文中给大家介绍MySQL 字符串截取相关函数,具体内容如下所示: 在工作中,可能需要将某些字段按某个分割符组成一个字符串作为字段值存取到数据库表中,比如某个任务对应三个结果,分别存储在不同的数据表中,这时可以将这三个不同表的主键按照约定的顺序进行组合(主键a:主键b:主键c).当需要分别去查任务对应类别的详情信息时,可以截取特定位置的字符串(主键b) join 表b进行操作.正好最近也遇到这块操作,特意将 MySQL 字符串截取的相关函数做一个梳理,以便今后回顾. 一.left(str, len

  • MySQL Delete 删数据后磁盘空间未释放的原因

    问题描述 在 MySQL 中使用 delete 语句删除数据之后,监控视图中可用的磁盘空间没有增加,磁盘使用率没有下降等等. 解决方案 delete 不释放空间是 MySQL 自身机制的原因,需要重建表才可以释放磁盘空间,可以参考的操作: 执行 optimize table ${table_name}. 如果是 InnoDB 的表,执行 alter table ${table_name} engine = innodb. 需要注意以下两个问题: 这两个命令都会重建表,尽量不要在磁盘空间紧张(>9

随机推荐