我有以下语法返回预期结果:
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
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)
子查询(内联视图)仅针对外部查询中的相关材料进行评估。只需确保每个表(材料、步骤)上都有适当的索引,例如路径表上的复合索引。