在不使用子查询的情况下编写查询

时间:2017-07-04 10:47:49

标签: sql join subquery

我有两张桌子,A和B.

它们由一个名为id的公共字段连接在一起。表B还有一个字段post_code和一个附加到该post_code的日期,这意味着post_code第一次输入到数据库中。

我需要选择最新的邮政编码并将其连接到表A上的一行而没有子查询。

我有一个带有子查询的解决方案,但它花了太长时间

TIA

1 个答案:

答案 0 :(得分:1)

您可以尝试使用APPLY

Create Table #A(Id int)

Create Table #B(Id int, AId int, PostCode VARCHAR(10), DateAdded DATE)

Insert into #A
    Values(1),(2)


Insert into #B
    Values(1,1,'NW1', GETDATE()-100),
          (2,1,'S20', GETDATE()-200)

Select *
From #A A
    CROSS APPLY(SELECT TOP 1 B.*
                FROM #B B
                WHERE A.Id = B.AId
                ORDER BY DateAdded DESC) Latest