sql join - 仅从第二个表中选择第一行

Wil*_*ill 1 sql join distinct distinct-values

sql noob的位,在客户代码/电话号码的表a中有一个列表,而表b包含所有的呼叫记录.

我想从表b中为表a中的每个客户代码/电话号码选择最近的呼叫.

到目前为止,我有:

SELECT     A.CustomerCode, A.PhoneNumber, B.StartTime
FROM         tableA A INNER JOIN
             tableB B ON ( A.PhoneNumber = B.PhoneNumber 
                           AND A.CustomerCode = B.CustomerCode )
ORDER BY A.CustomerCode, A.CLI, B.StartTime DESC
Run Code Online (Sandbox Code Playgroud)

但这会带来TableB的所有结果.我真的只想得到最近的电话,如果这有意义吗?

And*_*mar 5

您可以自己加入调用表,并指定不存在以后的行.喜欢:

SELECT       A.CustomerCode, A.PhoneNumber, B.StartTime
FROM         tableA A 
INNER JOIN   tableB B 
ON           A.PhoneNumber = B.PhoneNumber 
AND          A.CustomerCode = B.CustomerCode
LEFT JOIN    tableB later
ON           B.PhoneNumber = later.PhoneNumber 
AND          B.CustomerCode = later.CustomerCode
AND          later.StartTime > B.StartTime
WHERE        later.PhoneNumber is null
Run Code Online (Sandbox Code Playgroud)

条件later.PhoneNumber is null说不能有后一行.如果有多个行具有相同的StartTime,则会选择所有行.

这允许您从最新的呼叫中选择所有列.