SQL删除指定字段问题
2009-12-16 08:11
239 查看
更新下问题:
表:TBL_Info
字段:
infoId int
title varchar(20)
Content text
byUser varchar(20)
createTime datetime
1、如何删除表中数据相同的数据呢?(主键除外)
2、如何删除数据表中某个字段数据相同的数据呢(比如title:删除所有title相同的数据)?
3、如何统计表中title相同数据的数目?
--1
--1.1相同时保留最小的infoId
delete TBL_Info from TBL_Info t where infoId not in (select min(id) from infoId where title = t.title and Content = t.Content and byUser = t.byUser and createTime = t.createTime)
--1.1相同时保留最大的infoId
delete TBL_Info from TBL_Info t where infoId not in (select max(id) from infoId where title = t.title and Content = t.Content and byUser = t.byUser and createTime = t.createTime)
--2
delete from TBL_Info where title in (select title from TBL_Info group by title having count(1) > 1)
--3
select title , count(1) from TBL_Info group by title
select title , count(*) from TBL_Info group by title
select title , count(title) from TBL_Info group by title
--功能概述:删除重复记录
在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?谢谢!
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
比方说在A表中存在一个字段“name”,而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
http://topic.csdn.net/u/20091215/23/548d1982-7610-4d0f-8ddb-2150f7ae0589.html
表:TBL_Info
字段:
infoId int
title varchar(20)
Content text
byUser varchar(20)
createTime datetime
1、如何删除表中数据相同的数据呢?(主键除外)
2、如何删除数据表中某个字段数据相同的数据呢(比如title:删除所有title相同的数据)?
3、如何统计表中title相同数据的数目?
--1
--1.1相同时保留最小的infoId
delete TBL_Info from TBL_Info t where infoId not in (select min(id) from infoId where title = t.title and Content = t.Content and byUser = t.byUser and createTime = t.createTime)
--1.1相同时保留最大的infoId
delete TBL_Info from TBL_Info t where infoId not in (select max(id) from infoId where title = t.title and Content = t.Content and byUser = t.byUser and createTime = t.createTime)
--2
delete from TBL_Info where title in (select title from TBL_Info group by title having count(1) > 1)
--3
select title , count(1) from TBL_Info group by title
select title , count(*) from TBL_Info group by title
select title , count(title) from TBL_Info group by title
--功能概述:删除重复记录
在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?谢谢!
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
比方说在A表中存在一个字段“name”,而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
http://topic.csdn.net/u/20091215/23/548d1982-7610-4d0f-8ddb-2150f7ae0589.html
相关文章推荐
- SQL存储过程之删除指定表中指定字段所有约束
- sql删除字段中指定字符之前的字符串或者删除字段中指定字符之后的字符串
- sql在指定列后添加或删除字段
- 删除指定名称的所有字段.sql
- 查找指定表的字段not null约束,并生成删除Sql
- sql 替换字段内的内容及出现的问题
- oracle使用sql语句增加字段示例(sql删除字段语句)
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等,需要的朋友可以参考下。
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 解决“指定的服务已经标记为删除”问题
- DataGridView的增加,修改,删除命令指定SQL语句
- 用Sql添加删除字段,判断字段是否存在的方法
- sql删除数据库重复字段的行
- 将指定SQL的执行计划从共享池删除的方法
- 关于用Hibernate执行sql查询,字符字段类型只返回第一个字节的问题
- Dynamics CRM 删除字段时检测到有组件类型为查看的依赖组件而无法删除问题
- sql语句删除数据表重复字段的方法
- 利用shell删除数据表中指定信息和字段对应的文件
- Mysql中用SQL增加、删除字段,修改字段名、字段类型、注释,调整字段顺序
- SQL语句怎么批量对指定字段加上指定内容?