首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求一SQL语句 [已结贴,结贴人:hncswc_112913]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-30 11:14:35 楼主
    有一表(table)字段为(a,b,c,d)
    需要根据,字段a,b,c约束去掉多余的重复值
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-30 11:15:591楼 得分:10
    http://topic.csdn.net/u/20080626/00/43d0d10c-28f1-418d-a05b-663880da278a.html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-30 11:16:252楼 得分:0
    按以上方法處理
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MOTA
    • 等级:
    发表于:2008-06-30 11:17:123楼 得分:0
    分数别浪费了
    给我吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-30 11:30:524楼 得分:10
    SQL code
    一张表里面以两个字段为唯一字段,当几条记录的这两个字段完全相同时,需要删除重复项,如下表 a b c d 1 2 3 4 1 5 3 5 1 2 7 9 以a、b为唯一字段,第一条和第三条的a、b完全相同,所以,需要删除第一条记录1 2 3 4 或者第三条记录1 2 7 9 即如下结果: a b c d 1 2 3 4 1 5 3 5 或 a b c d 1 5 3 5 1 2 7 9 请问各位大侠这种sql语句怎么写 CREATE TABLE Tb1(id int, [a] varchar(255), [b] varchar(255), [c] varchar(255), [d] varchar(255)) INSERT Tb1(id, [a], [b], [c], [d]) SELECT 1, '1','2','3','4' UNION ALL SELECT 2, '1','5','3','5' UNION ALL SELECT 3, '1','2','7','9' UNION ALL SELECT 4, '1','4','7','6' delete Tb1 where [id] not in (select max([id]) from Tb1 group by a,b ) select * from tb1 drop table tb1 如果要同时删除第一和第三行 即如下结果: a b c d 1 5 3 5 语句如下: delete m from tb t inner join ( select a ,b from tb group by a , b having count(*)>1 )n on m.a = n.a and m.b = n.b 或 delete * from tb as m, ( select a ,b from tb group by a , b having count(*)>1 )n where m.a = n.a and m.b = n.b 在几千条记录里,存在着些相同的记录,如何能用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)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-30 11:31:315楼 得分:0
    建议楼主给点数据。测试一下。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-30 11:48:446楼 得分:0
    对表做唯一也可啊
    如果已存在重复值你就写个SQL
    GROYP BY A,B,C 的方法就可以了
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved