distinct 好像必须放到前头?
大多数表都有自增ID吧.我目前的情况是想根据两个其它字段去重,但又要输出ID号.至于去重后保留哪个ID倒无所谓.用的是sql server 2008
至于为何有这样的需求:自己挖的坑呗,以为客户会遵守约定不发重复数据所以当初没加唯一性约束,现在大量数据存在无法加约束了...
distinct 好像必须放到前头?
大多数表都有自增ID吧.我目前的情况是想根据两个其它字段去重,但又要输出ID号.至于去重后保留哪个ID倒无所谓.用的是sql server 2008
至于为何有这样的需求:自己挖的坑呗,以为客户会遵守约定不发重复数据所以当初没加唯一性约束,现在大量数据存在无法加约束了...
可以用ROW_NUMBER
PARTITION BY 后的col1,col2列就是用于区分重复行的列
select * from
(SELECT *,row_number(patition by col1,col2 order by ID) as seq FROM table1) as t
where t.seq=1
不用分区函数也可以吧
select t1.*
from table1 as t1 inner join (
select col1, col2, min(id) as id
from table1 as t2
group by col1, col2
) t3 on t1.col1 = t3.col1 and t1.col2 = t3.col2 and t1.id > t3.id
5 回答3.3k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
3 回答2.3k 阅读