Sql server SQL Server:加入顶级记录选择

Sql server SQL Server:加入顶级记录选择,sql-server,tsql,join,Sql Server,Tsql,Join,这是我表中的数据,我需要删除任何一个具有相同客户端代码和帐户代码的电子邮件地址。例如,电子邮件地址ragu@bib.com和ragu1@bib.com客户代码和账户代码相同,但电子邮件地址不同;我只需要显示一个包含所有记录的电子邮件地址。请为此建议合适的查询。您可以使用带领带的top 1,如下所示: Clientcode Emailaddress Accountcode clientname phoneno -----------------------------------

这是我表中的数据,我需要删除任何一个具有相同客户端代码和帐户代码的电子邮件地址。例如,电子邮件地址
ragu@bib.com
ragu1@bib.com
客户代码和账户代码相同,但电子邮件地址不同;我只需要显示一个包含所有记录的电子邮件地址。请为此建议合适的查询。

您可以使用带领带的top 1,如下所示:

Clientcode  Emailaddress    Accountcode clientname      phoneno
----------------------------------------------------------------
AAA         ragu@bib.com        100     Berjeya         90909090
AAA         ragu1@bib.com       100     Berjeya         90909090
AAABBB      jkkjkj@bib.com      200     Berjeya sooo    3222
CCCC        dfdf@bib.com        200     Berjeya klkl    123
dddd        sdsdsd@bib.com    33300     Berjeya penn    33333
使用子查询,您可以执行以下操作

Select top (1) with ties * from yourtable
   order by row_number() over(partition by ClientCode,AccountCode order by EmailAddress)

您可以将top 1与领带一起使用,如下所示:

Clientcode  Emailaddress    Accountcode clientname      phoneno
----------------------------------------------------------------
AAA         ragu@bib.com        100     Berjeya         90909090
AAA         ragu1@bib.com       100     Berjeya         90909090
AAABBB      jkkjkj@bib.com      200     Berjeya sooo    3222
CCCC        dfdf@bib.com        200     Berjeya klkl    123
dddd        sdsdsd@bib.com    33300     Berjeya penn    33333
使用子查询,您可以执行以下操作

Select top (1) with ties * from yourtable
   order by row_number() over(partition by ClientCode,AccountCode order by EmailAddress)

看起来这是SQL Server的问题。。。是否将其标记到SQL Server看起来这是SQL Server问题。。。对SQL Server进行标记我喜欢这样,这是一个聪明的小技巧,可以消除对子查询的需要,但是,对于优化者来说,它似乎太聪明了。它会导致额外的排序,并且始终比在
row\u number()
计算中使用带有外部谓词的子查询的性能差。。但是我可以知道我们如何使用子查询来实现这一点吗?你能给我一些上述记录的示例查询吗?@garethd你是对的,发生了一个额外的排序运算符。。。这为子查询方法提供了优势。像这样,消除子查询的需要是一个聪明的小技巧,然而,对于优化者来说,它似乎太聪明了。它会导致额外的排序,并且始终比在
row\u number()
计算中使用带有外部谓词的子查询的性能差。。但是我可以知道我们如何使用子查询来实现这一点吗?你能给我一些上述记录的示例查询吗?@garethd你是对的,发生了一个额外的排序运算符。。。这为子查询方法提供了优势