MySQL 根据链接表中的日期获取最后结果

MySQL getting last results depending on date from linked tables

我有一个问题需要你的帮助。

我将在示例场景中解释问题所在。

有3个table:A、B、C。 B 和 C 与 table A 之间存在多对一关系。 B 和 C tables 在 table A 中有一个条目的多个条目。 我需要一个只包含来自 B 和 C 的一个条目的查询,但必须选择该条目,以便返回来自 B 和 C 的最新日期条目。我不能依赖 B 和 C 的 ID,因为它们没有排序,也不保证最大的 ID 就是正确的 ID。 B 和 C 中条目的日期是唯一有效标准。

这里有一个示例数据:

Table A

tableaid | Some data ...
------------------
 1 |  ....
 2 |  ....
 3 |  ....
 4 |  ....
    ...


Table B

id | linkid |    date    | colb |  Some data ...
----------------------------------------------
 1 |    1   | 01/01/2000 |  A1  |     ....
 2 |    1   | 05/20/2001 |  A2  |     ....
 3 |    1   | 07/10/2002 |  A3  |     ....
 4 |    2   | 10/27/2000 |  B1  |     ....
 5 |    2   | 01/01/2001 |  B2  |     ....
 6 |    2   | 06/01/2002 |  B3  |     ....
 7 |    3   | 05/01/2000 |  C1  |     ....
 8 |    3   | 01/01/2003 |  C2  |     ....
 9 |    4   | 05/01/2004 |  D1  |     ....
         ...

Table C

id | linkid |    date    | colc |  Some data ...
----------------------------------------------
 1 |    1   | 01/01/2000 |  a1  |     ....
 3 |    1   | 05/20/2005 |  a2  |     ....
 2 |    2   | 07/10/2000 |  b1  |     ....
 4 |    2   | 10/27/2003 |  b2  |     ....
 8 |    2   | 01/01/2005 |  b3  |     ....
 6 |    3   | 06/01/2001 |  c1  |     ....
 9 |    3   | 05/01/2005 |  c2  |     ....
 5 |    4   | 01/01/2000 |  d1  |     ....
 7 |    4   | 05/01/2004 |  d2  |     ....
         ...

Result
=============================================
tableaid | colb | colc | Some other data ...
---------------------------------------------
 1       |  A3  |  a2  | ...
 2       |  B3  |  b3  | ...
 3       |  C2  |  c2  | ...
 4       |  D1  |  d2  | ...
    ...

我知道如何只对 A 和 B 或 C 执行此操作,但不知道如何对 A 和 B、C 执行此操作。任何帮助表示赞赏。我有饼干:)

像这样使用子选择

select a.*,
 (select colb from tableb b where b.linkid = a.tableaid order by b.date desc limit 1) as colb
from tablea a

colc 的类似内容。