
正文
sqlserver多字段某个字段去重复,sql多字段去除重复数据
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
SQL语句查询多个字段并按某一个字段去掉重复项
sql语句通过DISTINCT关键字去重, 用于返回唯一不同的值。DISTINCT关键字需要搭配SELECT 语句使用,语法为SELECT DISTINCT 列名称 FROM 表名称。
这样肯定不行啊,因为数据库无法判断你要去掉哪条重复的。比如你想要a只显示一条,但是相对于a的col1里面有三个不同的值,数据库是无法给你判断的。
首先,先说明一个问题。这样的结果出现,说明系统设计是有问题的。其次删除重复数据,你要提供你是什么数据库。不同数据库会有不同的解决方案。
select * from tb1where id in (select id from tb1 group by id having count(id) 1) and not exists max(data) --这样先查询下,是要删除的信息,就可以换成delete了。
看来这个数据库里面有重复的记录。你可以参考下group by group by后面可以跟多个列名,用逗号分隔,只有这些列名才能在select后面出现。比如要查询姓名不重复的人。
相关问答
Q1: DB2如何根据多个字段的值去掉重复记录?
另外,你如果不怕操作错误的话,可以把日志关掉,这样删除的速度回比较快。还有,如果表上的index比较多,而你又打开了auto_reorg那也会很慢的。
注意结果表中具有重复的行,这是因为有多个雇员在同一部门工作(记住SQL从所选的所有行中将值返回)。要消除结果中的重复行,只要在SELECT语句中加上DISTINCT子句: SELECT DISTINCT BRANCH_OFFICE FROM EMPLOYEES; 这次查询的结果如表3所示。
你这个要求在你这个语句里是实现不了的。custid 相同,其他字段不同,而且你查询的结果又有其他字段,是不可能实现的除非你值查询custid 。
group by id having count(*)1 就可以查出ID相同的了。
如果对表中字段顺序没有要求的话:可以先添加一个Date类型字段,把time中的值插入到新字段中,然后把time字段Drop掉,然后再添加一个类型为Date的time字段,前面新增字段的值放回来,再去掉该字段。Done。
如果oid不是主码,如果仍然使用index1,那么当oid不足以区分表中行的时候,才会使用name和age进一步筛选。
Q2: sqlserver,在两条完全相同纪录,同时列当中包含有text这种不能被distinct...
这个里面唯一的工作就是去重复,去重复的办法很多,关键的就是看效率问题咯,distinct, in, not in ,exists ,not exists.这些关键字,看楼主用的in,改用exists可能会提高一点效率,个人喜欢用exists,特别是大数据。
sqlserver多字段某个字段去重复的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于sql多字段去除重复数据、sqlserver多字段某个字段去重复的信息别忘了在本站进行查找喔。





