sql-server – 如何加入子查询的第一行?
发布时间:2020-12-12 16:09:43 所属栏目:MsSql教程 来源:网络整理
导读:我有一张发票表和一个关键数据相关数据的子表.特别是,对于每张发票,我只对子表中的第一个相关行感兴趣.鉴于我想要每个发票密钥的一个相关行 – 我该如何实现? Select i.[Invoice Number],c.[Carrier Name]From Invoice i Left Join Carriers c on i.[Invoice
我有一张发票表和一个关键数据相关数据的子表.特别是,对于每张发票,我只对子表中的第一个相关行感兴趣.鉴于我想要每个发票密钥的一个相关行 – 我该如何实现?
Select i.[Invoice Number],c.[Carrier Name] From Invoice i Left Join Carriers c on i.[InvoiceKey] = c.[InvoiceKey] Where -- what? 我猜在语义上,我正在寻找类似于InvoiceKey的Top 1 c.CarrierName Group的概念的东西(或者如果在T-SQL中可能的话,那么它的概念是什么). 我想过在子查询上做一个左连接,但是似乎效率并不高.有没有人有任何T-SQL技巧来有效地实现这一点? 编辑:对不起,我忘了提到这是SQL Server 2000,所以当我要放弃当前的SQL Server 2005/2008响应,这将是有效的,我不能接受他们恐怕. 解决方法只要操作符有一个PRIMARY KEY称为id:SELECT i.[Invoice Number],c.[Carrier Name] FROM Invoice i JOIN Carriers c ON c.id = ( SELECT TOP 1 ID FROM Carriers ci WHERE ci.InvoiceKey = i.InvoiceKey ORDER BY id -- or whatever ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |