删除sql select中的重复项。 [英] Remove duplicate in sql select.
本文介绍了删除sql select中的重复项。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有一个功能
Have a function
SELECT DISTINCT keyid, field1, field2
FROM fnFunction('PARAMETER')
返回
returns
1 DATA1 DATA2
1 DATA2 DATA3
2 DATA1 DATA3
我想要的是删除副本
删除此
what i want is remove the duplicate
remove this
1 DATA1 DATA2
或者这两个,要么是两个
or this, either the two
1 DATA2 DATA3
因为keyid没有重复
删除2个字段将解决问题,但查询必须返回我的应用程序中的那两个值(vb.net)
as long as the keyid has no duplicate
removing the 2 fields will solve the problem but query must return those 2 value in my application(vb.net)
推荐答案
如果你是使用 SQL Server 2005 或更高版本,这应该可行:
Hi,
If you're using SQL Server 2005 or greater, then this should work:
SELECT keyid, field1, field2
FROM (SELECT keyid, field1, field2,
ROW_NUMBER() OVER (PARTITION BY keyid ORDER BY field1, field2) AS RowNumber
FROM fnFunction('PARAMETER')
) AS sub
WHERE sub.RowNumber = 1;
我假设 fnFunction 是一个表值函数。
我不确定keyid字段,但对于其他人,你可以使用UNION
I'm not sure about the keyid field, but for the others you can use a UNION
Select field1 from fn('PARAMETER')
UNION
Select field2 from fn('PARAMETER')
如果添加keyid字段,那么你将获得(通常)更多记录,你可能希望将其转换为临时表和进程使用第二个查询 - 这取决于keyid字段中的内容。
视图(而不是临时表)可能是更好的选择,取决于您如何使用数据。
这篇关于删除sql select中的重复项。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文