不使用SubQuery的父子查询

use*_*567 2 sql sql-server oracle

假设我有两张桌子,

表A.

ID  Name
--  ----
 1   A
 2   B
Run Code Online (Sandbox Code Playgroud)

表B.

AID  Date
--  ----
 1   1/1/2000
 1   1/2/2000
 2   1/1/2005
 2   1/2/2005
Run Code Online (Sandbox Code Playgroud)

现在我需要这个结果而不使用子查询,

ID  Name  Date
--  ----  ----
 1   A    1/2/2000
 2   B    1/2/2005
Run Code Online (Sandbox Code Playgroud)

我知道如何使用子查询执行此操作但我想避免因某些原因使用子查询?

das*_*ght 6

如果我的意思正确并且您需要TableB中的最新日期,那么下面的查询应该这样做:

select a.id,a.name,max(b.date)
from TableA a
join TableB b on b.aid = a.id
group by a.id,a.name
Run Code Online (Sandbox Code Playgroud)


JNK*_*JNK 5

SELECT a.ID, a.Name, MAX(B.Date)
FROM TableA A
INNER JOIN TableB B
    ON B.ID = A.ID
GROUP BY A.id, A.name
Run Code Online (Sandbox Code Playgroud)

这是一个简单的聚合.看起来你想要每个id/name组合的最高日期.