mysql-mySQL 单表删除低于平均分以下的所有数据

问题描述

mySQL 单表删除低于平均分以下的所有数据
delete from t_table where num < ( select avg(num) from
t_table)
执行报错。哪里错了吗?还是有其他方法?

解决方案

不能先select出同一表中的某些值,再update/delete这个表(在同一语句中)
楼上说的是一种解决方法,也可以这样写,两种都可以
delete from t_table where num < (select avg(num) as num from (select * from t_table)c);
delete from t_table where num < (select * from (select avg(num) as num from t_table)v);
注:as num和最后的c或v别忘记

解决方案二:
哦,我知道了,你子查询和删除是一个表,所以不能写在一起,你需要把平均值查询好,然后再删除
set @a = (select avg(num) from t_table);
delete from t_table where num < a;

解决方案三:
num是数字类型么?没看出什么错误来。

解决方案四:
@caoshy
蓝色是选中代码,下面是报错内容

时间: 2024-10-25 17:56:26

mysql-mySQL 单表删除低于平均分以下的所有数据的相关文章

解析mysql中:单表distinct、多表group by查询去除重复记录

单表的唯一查询用:distinct 多表的唯一查询用:group bydistinct 查询多表时,left join 还有效,全连接无效, 在 使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重复记录的所有值.其原因是distinct只能返回它的目标字段,而无法返回其它字段,用 distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据

解析mysql中:单表distinct、多表group by查询去除重复记录_Mysql

单表的唯一查询用:distinct多表的唯一查询用:group bydistinct 查询多表时,left join 还有效,全连接无效,在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重复记录的所有值.其原因是distinct只能返回它的目标字段,而无法返回其它字段,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的

mysql 导出单表数据/备份单表数据语句

前两天遇到数据用source命令恢复数据时,提示包过大的错误.那个包用mymanager导出的,这次用mysql自带mysqldump工具成功导出并导入到数据表中. mysqldump 导出数据库某个表的数据方法如下:  代码如下 复制代码 mysqldump -t -u root -p -B article --table article_detail > e:/www.111cn.net/my.sql 其中article是数据库,article_detail是数据表(只导出了数据未包含结构)

mysql中多表删除其中ID相同记录的方法_Mysql

  问题源自一个5年前的百度知道回答,刚看到这个问题时我刚上班21天,遂根据自己的那一丁点经验和临时操作检验做出了当时认为正确的回答:   但很快就被人否定,我猜主要原因就是我说的最后一句话过于绝对,但由于自己太相信自己了,而且有一大堆理由支撑着,所以没有深入研究. 最近又有网友评论了我的这个回答,我才开始查了一下百度,发现Mysql4.0以上版本已经可以通过一条delete删除多个表的数据了.看来我确实在误人子弟了,只能说声抱歉,好在楼主没有选我的答案,要不然罪过大了. 最后总结一下: MyS

MySQL分库分表的实现过程详解介绍

MySQL分库分表基础表介绍 表基本模型结构 这里我们模拟一个商城的基本的表结.此结构由(用户.门店.导购.门店商品.订单.订单对应的商品).其中,导购也是一个用户,门店是只属于一个店主的,同时店主本身也是一个导购也是一个普通用户. 结构图:   构造数据脚本 MySQL分库分表(1)-脚本 对业务场景进行模拟 场景1:购买者下订单. 1.从session中获得客户ID. 2.可以通过时间戳等拼凑一个订单ID(在创建表的时候为了方便我用自增的,在以下我们一直就吧订单ID看成不是自增的,是用程序生

mysql-MySQL数据库从表1(table1)中导出数据到(table2)中。会有多列。

问题描述 MySQL数据库从表1(table1)中导出数据到(table2)中.会有多列. table1 字段:id name url table2: 需要获取 table1 中的id url 请问怎样实现? 用sql实现的时候需要注意字段名字和顺序吗? 解决方案 字段名称随便,但是要对应起来,包括类型. create table table2 ( id int primary key, name varchar(20), ) insert into table2(id,name) select

MySQL · 源码分析 · 无法revoke单库或单表权限

现象 对于拥有全局权限的用户,无法revoke单库或单表的权限,示例如下 mysql> grant select on *.* to 'xx1'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> revoke select * test.* from 'xx1'@'localhost'; ERROR 1141 (42000): There is no such grant defined for user 'xx1' on hos

MySQL · 答疑释惑 · UPDATE交换列单表和多表的区别

背景描述 之前我们遇到一个咨询,客户说: 1. 同一个表,col1=a,col2=b,做 update,set col1=col2,col2=col1,这时候两个都是b 2. 不同表,A表 col1=a,B表 col2=b,做 update,就能进行交换 为什么不同表就能交换呢? 问题实验 一张表的测试 root@localhost : test 12:36:09> select * from upt; +------+------+ | c1 | c2 | +------+------+ |

MySQL单表ibd文件恢复方法详解_Mysql

前言: 随着innodb的普及,innobackup也成为了主流备份方式.物理备份对于新建slave,全库恢复的需求都能从容应对. 但当面临单表数据误删,或者单表误drop的情况,如果使用物理全备进行恢复呢? 下文将进行详细分析. 恢复过程中需要用到的工具,percona data recover tool : https://launchpad.net/percona-innodb-recovery-tool 情况一:误删部分数据,需要用最近一次备份覆盖 来自同一台机器的ibd恢复覆盖,且备份