这个是找出相同的吧?
只保留一个,删除多余的应该怎么弄呢?
你是要直接删除的语句吗?
追问是的,求一个直接删除多余的相同记录语句。
radacct 表里 AcctSessionid 有相同记录,删除多余的保留唯一就可以了。
delete from AcctSessionid where id not in (select min(id) from AcctSessionid group by 相同的字段名)
你得试一下 我没有验证过
试过了select min(id) from AcctSessionid 这句话只能查到一个记录,但还不是我想删除的。
追答这个当然只返回一条了 你得加上后面的Group by啊 group by过滤的就是你那个相同值的字段啊
追问select min(AcctSessionid) from radacct where acctstoptime='0000-00-00 00:00:00' group by AcctSessionid
这样是可以排除重复记录了但是
delete from AccSessionid where id not in ()套在外面运行就报错了
[Err] 1093 - You can't specify target table 'radacct' for update in FROM clause
delete from radacct where id not in(select min(AcctSessionid) from radacct where acctstoptime='0000-00-00 00:00:00' group by AcctSessionid
)
[SQL] delete from radacct where AcctSessionid not in(select min(AcctSessionid) from radacct where acctstoptime='0000-00-00 00:00:00' group by AcctSessionid)
[Err] 1093 - You can't specify target table 'radacct' for update in FROM clause
http://zhidao.baidu.com/question/68619324.html
原来MySQL不支持这么用。你看下这个,估计你得建临时表的方式来处理了
本人菜鸟一个,能否给出详细语句。
追答创建一个结构跟你要处理的表结构一样的临时表,将全部数据copy到那个临时表,然后语句这样写:
delete from radacct where AcctSessionid not in(select min(AcctSessionid) from 临时表名where acctstoptime='0000-00-00 00:00:00' group by AcctSessionid)
insert into temp select * from radacct where acctstoptime='0000-00-00 00:00:00' order by nasipaddress desc;
delete from radacct where AcctSessionid not in(select min(AcctSessionid) from temp where acctstoptime='0000-00-00 00:00:00' group by AcctSessionid);
影响的数据栏: 31602
时间: 18.937ms
这句话删了我3W多条记录啊,我只要删重复的。
那是要删什么重复的?就把那个字段放到gourp by后面
radacct 表里 AcctSessionid字段 有相同记录,删除多余的保留唯一就可以了。
追答需要另外一个字段,最好是AcctSessionid对应的唯一的,这样才好处理
类似id
delete from radacct t1
where id (select min(id) from radacct where AcctSessionid = t1.AcctSessionid)
有没有更简单些的方法,或者函数。尽量不动结构。
追答如果没有这样一个字段,mysql没有办法拿到行号,很难
求MYSQL中某字段内的重复数据以及删除重复保留一条
mysql不支持在同一个表查询之后,做修改、删除操作。删除的思路是,1、select id from tbl_vod group by d_name having count(d_name)>1 找到需要保留的id 2、 select id from (select id from tbl_vod group by d_name having count(d_name)>1) as a 把需要保留的结果指定新的表名,找...
在mysql数据库中如何让某个字段有重复的只取一条
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不...
MySQL去重如何在数据库中去掉相同的数据mysql中去掉相同部分
一、使用DISTINCT关键字进行去重 在MySQL中,DISTINCT关键字可以用来去重。它的作用是去掉查询结果中相同的记录,只保留不同的记录。使用DISTINCT关键字进行去重的语法如下:SELECT DISTINCT column1, column2, … FROM table_name;其中,column1, column2, …是要去重的列,table_name是表名。
mysql数据库删除某字段重复的数据保留ID小的命令是什么啊?
不过~mysql不允许在select的同时~又update表~所以呢~我建议你建一个临时表~分2条sql语句来完成~第一步:把要保留的ID存入临时表 create table temp select Min(iD) ID from A group by Data 第二部:执行删除语句~delete from A where ID not in (select ID from temp)希望对你有用。---...
如图mysql数据库删除重复数据,只保留一个 不知道语句代码怎么写 求助...
表taobao的表结构贴出来,没有id列的吗。。如果就只有那两个字段就只能先把group by后的先复制到一个表,再替换回来。大致如下 alter table taobao rename tabao_copy;create table taobao like tabao_copy;insert into tabao select * from tabao_copy group by title,url ...
MySQL去重显示消除重复字段mysql不显示重复字段
MySQL去重显示:消除重复字段 在实际开发中,我们常常面临的一个问题是需要从数据库中获取一些数据,但是这些数据中存在相同的字段值,我们希望只获取不重复的字段值。这时,我们可以使用MySQL中的去重显示功能,即消除重复字段。方法一:使用DISTINCT关键字 在MySQL中,要消除重复字段,可以使用DISTINCT关键字。
mysql如何去除两个字段数据相同的记录
MySQL查询重复字段,及删除重复记录的方法 数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较。如果仅仅是查找数据库中name不重复的字段,很容易:SELECT min(`id`),`name` FROM `table` GROUP BY `name`;但是这样并不能得到说有重复字段的id值。(只得到了最小的一个id值)查询哪些...
在mysql数据库中如何让某个字段有重复的只取一条
select top 1 id,name,age from 表 order by age desc按照年龄倒序排序,然后取第一条。考虑可能有多人年龄相同,如果都需取出,可以这样写:select id,name,age from 表 where age=(select max(age) from 表)
求一个mysql数据库删除重复数据的SQL语句
delete from article_chapter where aid not in(select max(aid) from article_chapter group by articleid , chaptername)
如何使用MySQL实现一列数据的去重mysql一列去重复
方法一:使用DISTINCT DISTINCT是MySQL中用于去重的非常实用的关键字,它可以用于查询语句中,可以去除结果集中重复的记录。该方法使用起来非常方便,只需在SELECT语句中添加DISTINCT关键字即可。例如,要查询students表中的所有学生姓名,可以使用以下语句:SELECT DISTINCT name FROM students;该语句会返回一个...