求一个查询的解法

csdnTimePeriod 2012-12-12 02:27:22
实现一个查询从数据表a见下
a(id, state)
----------
1 0
1 1
2 1
3 0
获得
1 0
2 1
3 0
就是说如果id有重,取state=0;如果没有重复,那么state=0或者=1都需要
我的做法是
select id
from a
where state=0
union
select id
from a aa
where aa.state=1 and not exists (select id from a where a.id=aa.id and a.state=0)

这里想问还有其他实现方法吗?
对自己的数学没自信,希望知道多一些解法,也许对以后的工作有帮助。谢谢啦!
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sqlkxr 2012-12-13
  • 打赏
  • 举报
回复
select id,min(state) from a group by id
-Tracy-McGrady- 2012-12-12
  • 打赏
  • 举报
回复
with cte as (select id, state, row_number() over (order by id) as xh from a with(nolock)) select id,state,min(xh) from cte group by id,state
csdnTimePeriod 2012-12-12
  • 打赏
  • 举报
回复
非常感谢回帖!学到了新的办法,比我写的简洁。
jiangshun 2012-12-12
  • 打赏
  • 举报
回复
select * from [TA] T WHERE NOT EXISTS(SELECT 1 FROM TA WHERE T.id=ID AND t.state>[state])
-晴天 2012-12-12
  • 打赏
  • 举报
回复
select id,min(state) from a group by id

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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