MySQL 连接另一个表的 COUNT(*) 或 MAX()

问题描述 投票:0回答:1

我有以下语法返回预期结果:

SELECT 
material.period AS "Period", 
material.style AS "Style", 
material.artist AS "Artist", 
material.title AS "Title", 
material.path AS "Path", 
path.step AS "Steps" 
FROM material 
INNER JOIN path ON material.path=path.material;
正如预期的那样,path.step 返回多行。 material.path 和 path.material 都是整数字段,path.step 也是如此。

我想要的是获取path.step的最大值以减少返回的行数。 path.step 字段是序数字段,所以我正在考虑计数函数。

此语法返回预期结果。

SELECT COUNT(path.step) AS "Steps" FROM path GROUP BY material;
似乎最好使用 MAX() 而不是 COUNT()。我意识到我需要过滤第一个结果集以获得第二个结果集作为所需的结果。我不确定 WHERE 子句中的子查询是否最好,或者 CASE 是否最好。

请问您有什么建议?

谢谢, SHD

mysql syntax
1个回答
0
投票
SELECT * FROM material AS m INNER JOIN ( SELECT material, MAX(step) AS step FROM path GROUP BY material ) AS p ON p.material = m.path WHERE m.material IN (3,5,7)
子查询(内联视图)仅针对外部查询中的相关材料进行评估。

只需确保每个表(材料、步骤)上都有适当的索引,例如路径表上的复合索引。

© www.soinside.com 2019 - 2024. All rights reserved.