删除sql select中的重复项。 [英] Remove duplicate in sql select.

查看:82
本文介绍了删除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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆