sql server 有一个字段有重复,另一个字段没有重复,我只想按有重复的取第一条?????

比如说,我有两个字段parentid(有重复的),memo(没有重复的)我想取出来根据parentid不要重复。我这张表里有200w数据,刚才用游标,太慢了!在线等。。。... 比如说,我有两个字段parentid(有重复的),memo(没有重复的)
我想取出来根据parentid不要重复。
我这张表里有200w数据,刚才用游标,太慢了!
在线等。。。谢谢
展开
 我来答
FM网络
2008-12-30 · TA获得超过825个赞
知道小有建树答主
回答量:1130
采纳率:0%
帮助的人:972万
展开全部
先做一个视图:仅取 parentid(有重复的)中的第一条
再做一个交叉查询即可
例如 表A 有主键B和你的字段parentid(有重复的),memo(没有重复的)
视图C:select parentid,min(b) from a group by parentid
然后用: select c.parentid,a.memo from c inner join a on a.b=c.b

不需要游标这么麻烦的,系统会自动进行优化的。
Jerry流云
2008-12-30 · TA获得超过346个赞
知道小有建树答主
回答量:248
采纳率:50%
帮助的人:158万
展开全部
有好多方法,比如说用 DISTINCT :
SELECT DISTINCT(PartentID), Memo
FROM TableName
就是一种比较有效的方法,还有其他的方法,SQLSERVER2005下
WITH Temp AS
(SELECT ROW_NUMBER() OVER(PARTITION BY PartentID ORDER BY @@ROWCOUNT) AS ID, PartentID, Memo
FROM TableName)
SELECT * FROM Temp WHERE ID = 1 也是一种很好的方法,不过我刚才测试,好像效率稍微不如 DISTINCT,
还有其他的方法,比如你自己讲的用游标或者WHILE循环逐行扫描,不过这样子效率就很低了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无坚不摧Nerd
2008-12-30 · TA获得超过104个赞
知道答主
回答量:119
采纳率:0%
帮助的人:100万
展开全部
select * from table where meno in (select max(meno) from table group by parentid)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
agx2004
2008-12-30 · TA获得超过4849个赞
知道小有建树答主
回答量:1708
采纳率:0%
帮助的人:885万
展开全部
“我只想按有重复的取第一条”,这是什么意思?楼主的问题一直没搞太明白,虽然连续问了五六个问题,但都是完全复制的,都一样看不明白。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式