mysql删除表中某一字段重复的记录

比如,表:event(id int(10) auto_increment primary key,
                sid int(10)not null,
                detail text)

我想删除表event中sid重复的记录,请问有没有这样SQL语句?或是通过其它方法?


代码如下:

delete from event as e 
where id != (select min(id) from event where sid=e.sid);

or 


代码如下:

delete from event 
where sid not in (select mid from (select sid ,min(id) as mid from event group by sid))

应该是有用的代码


代码如下:

alter ignore table event add unique index idu_sid (sid);
alter table event drop index idu_sid;

(0)

相关推荐

  • MYSQL删除表中的指定ID数据

    删除A表中的ID 中的开头以B* 的数据库. 复制代码 代码如下: delete FROM A WHERE id like 'B%' 单独删除 A 表中的ID B 复制代码 代码如下: delete FROM A WHERE id = 'B'

  • MySQL 添加、修改、删除表的列及约束等表的定义

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table 表名 add column 列名 varchar(30); 删除列:alter table 表名 drop column 列名; 修改列名MySQL: alter table bbb change nnnnn hh int; 修改列名SQLServer:exec sp_rename't_stude

  • 在MySQL中删除表的操作教程

    丢弃现有MySQL的表是很容易的.但是需要非常小心,删除任何现有的一个表后将无法恢复,因为数据丢失. 语法: 下面是通用的SQL语法丢弃(删除)MySQL表: DROP TABLE table_name ; 从命令提示符删除表: 只需要在mysql>提示符下执行DROP TABLE SQL命令. 例子: 下面是一个例子,它删除表 tutorials_tbl: root@host# mysql -u root -p Enter password:******* mysql> use TUTORI

  • mysql删除表中某一字段重复的记录

    比如,表:event(id int(10) auto_increment primary key,                 sid int(10)not null,                 detail text) 我想删除表event中sid重复的记录,请问有没有这样SQL语句?或是通过其它方法? 复制代码 代码如下: delete from event as e  where id != (select min(id) from event where sid=e.sid);

  • MySQL命令行删除表中的一个字段

    先看看删除之前的表结构: mysql> select * from test; +------+--------+----------------------------------+------------+------------+------------+------------+ | t_id | t_name | t_password                       | t_birth    | birth      | birth1     | birth2     |

  • MySql删除表中一行的实操方法

    首先你要确定能够唯一确定你那一行数据的字段或字段组合是哪些, DELETE FROM 表名 WHERE 字段1 = '' and 字段2 = '' and ...字段1,...为能够唯一确定某一行数据的字段组合,''中填写你要 删除的字段具体值就可以了 如果有主键,则直接利用主键确定某一行就可以了. DELETE FROM 表名 WHERE 主键 = '具体值'. delete from ms_cf01 where brxm='张三' and id='7598'; 其中: ms_cf01 为你所

  • 获取MySQL的表中每个userid最后一条记录的方法

    如下表: CREATE TABLE `t1` ( `userid` int(11) DEFAULT NULL, `atime` datetime DEFAULT NULL, KEY `idx_userid` (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8: CREATE TABLE `t1` ( `userid` int(11) DEFAULT NULL, `atime` datetime DEFAULT NULL, KEY `idx_userid

  • MySQL 删除数据库中重复数据方法小结

    刚开始,根据我的想法,这个很简单嘛,上sql语句 delete from zqzrdp where tel in (select min(dpxx_id) from zqzrdp group by tel having count(tel)>1); 执行,报错!!~!~ 异常意为:你不能指定目标表的更新在FROM子句.傻了,MySQL 这样写,不行,让人郁闷. 难倒只能分步操作,蛋疼 以下是网友写的,同样是坑爹的代码,我机器上运行不了. 1. 查询需要删除的记录,会保留一条记录. select

  • Oracle 查找与删除表中重复记录的步骤方法

    这时候如果临时表中有重复数据,无论是主键字段businessid有重复,还是一整行有重复都会报出违反唯一主键约束错误. 方法:group by XX having count(*)>1,rowid,distinct,temporary table,procedure 1.查询表中的重复数据a.重复一个字段 b.重复多个字段 c.重复一整行 创建测试表: 复制代码 代码如下: create table cfa (businessid number,customer varchar2(50),bra

  • 如何使用MySQL一个表中的字段更新另一个表中字段

    1,修改1列 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多个列 update a, b set a.title=b.title, a.name=b.name where a.id=b.id •子查询 update student s set city_name = (select name from city where code = s.city_code); oracle

  • SQL Server删除表中的重复数据

    添加示例数据 create table Student( ID varchar(10) not null, Name varchar(10) not null, ); insert into Student values('1', 'zhangs'); insert into Student values('2', 'zhangs'); insert into Student values('3', 'lisi'); insert into Student values('4', 'lisi')

  • MySQL数据库表中的约束详解

    目录 MySQL表中的约束(constraint) 约束分类 非空约束 唯一性约束 复合约束 主键约束 自增列-AUTO_INCREMENT 外键约束FOREIGN KEY约束 CHECK约束 DEFAULT约束 MySQL表中的约束(constraint) 为了保证数据的完整性,(数据的精确性和可靠性) SQL规范以约束的方式对表数据进行额外的条件限制,可从以下四个方面进行考虑 实体完整性 域完整性 引用完整性 用户自定义完整性 约束?对表中字段的限制. 约束分类 约束作用字段的个数 单列约束

随机推荐