2016 - 2024

感恩一路有你

sql重复数据只取一条 如何删除sql中某个字段出现重复的数据,且只保留id最小的?

浏览量:1189 时间:2021-03-11 22:19:18 作者:admin

如何删除sql中某个字段出现重复的数据,且只保留id最小的?

其实非常的简单,只需要把你这张表当成两张表来处理就行了。DELETE p1 from TABLE p1, TABLE p2 WHERE p1.name = p2.name AND p1.email = p2.email AND p1.id < p2.id这里有个问题,题主说保留最新的那一条(也就是ID最小的那个),既然是递增,最新的不应该是最大的那条吗?上面的的语句,p1.id < p2.id,所以获取到的是id最大的,因为p1.id小于p2.id就会被删除,只有最大的值不满足。如果要获取id最小的那个,只需要把"<"改成">"即可。当然是用group by,count可以更精准控制重复n次的情况。不过目测楼主需求应该只要把重复的删掉,保留最新的就可以了。

如何用sql语句处理两表联查的相同字段时,只保留有数据的字段?

比如说现在有一个user表一个role表,都有一个USERNAME 字段,关联字段也是USERNAME,这里只查询USERNAME字段不为null的一方的值SELECT CASE WHEN u.USERNAME IS NOT NULL THEN u.USERNAMEWHEN r.USERNAME IS NOT NULL THEN r.USERNAME ENDFROM [USER] u RIGHT JOIN ROLE r ON u.USERNAME = r.USERNAME

关于SQL,如果一个表中的某个字段有重复值,重复值我只取一个应该怎么做呢?

用SQL嵌套比较好,SQL也比较清楚,

内层SQL,datepart(day,timestr)或convert 找到所有12月份,每个人提交日报的日期是每月的第几天,并生成一个字段,distinct确保只记录每天只保留一个 datepart(date,timestr)把每人的提交那一天找出来

外层SQL统计每个人有几天:

select username,count(*) from (select distinct username, datepart(dd,timestr) as userday from a

where datepart(mm,timestr)=12)

group by username

sql重复数据只取一条 sql删除相同数据只保留一条 sql删除重复项只保留一条

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。