部分重复字段的问题

flyforlove 2007-11-26 06:13:58
表中有三个字段
F1,F2,F3
记录之间F1和F2有可能重复,F3不会,
比如
F1 F2 F3
1 11 1
2 22 2
2 22 3
1 11 4
3 33 5

对于F1和F2重复的,我只想要一条,任何一条都可以。
比如结果为
1 11 1
2 22 2
3 33 5

如果用postgresql里的distinct on很好写,但是不知道标准的sql怎么写?不能用函数,不能用临时表,只有一条sql语句。
...全文
91 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyforlove 2007-11-27
  • 打赏
  • 举报
回复
sorry,字符型也可以做max()。谢谢大家的回答。
flyforlove 2007-11-27
  • 打赏
  • 举报
回复
不好意思,都怪我没说清楚,字段不一定是整数型的,我只是举了 一个例子,所以分组不行。
dawugui 2007-11-26
  • 打赏
  • 举报
回复
直接分组,用max(),min()即可.

select f1,f2,max(f3) f3 from tb group by f1,f2
select f1,f2,min(f3) f3 from tb group by f1,f2
kuangdp 2007-11-26
  • 打赏
  • 举报
回复
分组不是更好吗?
kuangdp 2007-11-26
  • 打赏
  • 举报
回复

SELECT F1,F2,MIN(F3) F3 FROM kdp_12345 GROUP BY F1,F2
昵称被占用了 2007-11-26
  • 打赏
  • 举报
回复

--or:
select * from tbname a
where F3= (
select top 1 F3 from tbname
where F1=a.F1 and F2=a.F2 and F3<a.F3
order by F3
)

昵称被占用了 2007-11-26
  • 打赏
  • 举报
回复

--or:
select * from tbname a
where F3= (
select min(F3) from tbname
where F1=a.F1 and F2=a.F2
)

昵称被占用了 2007-11-26
  • 打赏
  • 举报
回复

select * from tbname a
where not exists (
select 1 from tbname
where F1=a.F1 and F2=a.F2 and F3<a.F3
)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧