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你是对的,发生了一个额外的排序运算符。。。这为子查询方法提供了优势