我正在尝试使用 LEFT JOIN
统一一对查询,以便我可以在所需的列上执行 ORDER BY
。
表A与表B具有排他性的一对多关系,表B与表C具有排他性的一对多关系。
我想为表 A 中的每一行获取表 C 中某列的最大值。
我曾经拥有的是:
$tableA = SELECT * FROM tableA;
for each row in $tableA {
$maxValue = SELECT MAX(value) FROM tableC WHERE tableB_id IN (SELECT tableB_id FROM tableB WHERE tableA_id={$row['tableA_id']}) GROUP BY tableB_id;
}
现在我的思路是:
SELECT * FROM tableA LEFT JOIN (SELECT tableA_id, MAX(max_c_value) FROM (SELECT tableB_id, MAX(value) max_c_value FROM tableC GROUP BY tableB_id) t GROUP BY tableA_id) USING(tableA_id)
但我知道那是胡言乱语。我不知道从这里去哪里。 我发现很难解释这个问题,抱歉。
最佳答案
SELECT A.ID, MAX(C.MyField) as CField
FROM A
LEFT OUTER JOIN B
ON A.ID = B.A_ID
LEFT OUTER JOIN C
ON B.ID = C.B_ID
GROUP BY A.ID
如果没有对应的行,您将获得 CField 的空值。
关于php - 从相互关联的 MySQL 表中获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6508443/