0

谁能帮我解决这个问题?我有三张桌子(A;B;C)

A <--1....N---> B  <--1....N--->  C

我想要所有具有 C.dates 的 A 行(最大)

4

1 回答 1

0
SELECT A.*, MAX(C.dates)
FROM A
JOIN B ON B.A_fk = A.id
JOIN C ON C.B_fk = B.id
GROUP BY A.id

此 JOIN 将排除不会有 LEFT 连接的结果。也就是说,如果 A 中的任何行都没有 B 行,或者 B 中的任何行都没有 C 行,则该行不会显示。为了克服这个问题,您可以使用 LEFT JOIN 而不是 JOIN。

SELECT A.*, MAX(C.dates)
FROM A
LEFT JOIN B ON B.A_fk = A.id
LEFT JOIN C ON C.B_fk = B.id
GROUP BY A.id

编辑:抱歉没有注意到您需要 C.data 的最大价值。你有它。您必须在 SELECT 和 GROUP BY A.id 中使用 MAX 函数

于 2012-04-21T08:28:39.967 回答