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

来源:百度知道 编辑:UC知道 时间:2024/06/15 01:30:16
比如说,我有两个字段parentid(有重复的),memo(没有重复的)
我想取出来根据parentid不要重复。
我这张表里有200w数据,刚才用游标,太慢了!
在线等。。。谢谢

有好多方法,比如说用 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循环逐行扫描,不过这样子效率就很低了!

select min(parentid),memo from table group by parentid

200W数据用游标………

思路用GROUP BY没错,不过楼主没说要按什么规则来取“第一条”。

select * from table where parentid in(select distinct(parentid) from table)