MySQL 子查询 select 次要 table 中的最大值在两个 table 中都有条件
MySQL subquery select max value in secondary table with conditionals in both tables
在查看 Whosebug 数据库中的许多“类似”问题(例如 7745609)后,有一个语法问题我无法解决。这里的“独特”问题是每个 table 上都有条件。这是我的代码:
SELECT r.ID, r.FirstName, r.LastName, m.TotalMPs
FROM roster r
LEFT OUTER JOIN MPs m
ON r.ID= m.ID
WHERE r.eMail IS NOT NULL AND r.Subscribe = "Y" AND r.Status = "A" AND m.TotalMPs <= "10"
ORDER BY r.LastName, r.FirstName
这会检索花名册中的所有行,其中 MPs 中的匹配 ID 的 TotalMPs <= 10。但是 MPs 中的 ID 有多个行,我只希望 MAX(TotalMPs) 行从 MPs“加入”到花名册中的单个相应条目。我试过在不同的地方添加 MAX() 并在 LEFT OUTER JOIN 子句中添加 GROUP BY 但出现语法错误。非常感谢任何帮助。
SELECT r.ID, r.FirstName, r.LastName, m.TotalMPs
FROM roster r
INNER JOIN (
SELECT ID, MAX(TotalMPs) as TotalMPs
FROM MPs
GROUP BY ID
) m
ON r.ID = m.ID AND m.TotalMPs <= "10"
WHERE r.eMail IS NOT NULL
AND r.Subscribe = "Y"
AND r.Status = "A"
ORDER BY r.LastName, r.FirstName
在查看 Whosebug 数据库中的许多“类似”问题(例如 7745609)后,有一个语法问题我无法解决。这里的“独特”问题是每个 table 上都有条件。这是我的代码:
SELECT r.ID, r.FirstName, r.LastName, m.TotalMPs
FROM roster r
LEFT OUTER JOIN MPs m
ON r.ID= m.ID
WHERE r.eMail IS NOT NULL AND r.Subscribe = "Y" AND r.Status = "A" AND m.TotalMPs <= "10"
ORDER BY r.LastName, r.FirstName
这会检索花名册中的所有行,其中 MPs 中的匹配 ID 的 TotalMPs <= 10。但是 MPs 中的 ID 有多个行,我只希望 MAX(TotalMPs) 行从 MPs“加入”到花名册中的单个相应条目。我试过在不同的地方添加 MAX() 并在 LEFT OUTER JOIN 子句中添加 GROUP BY 但出现语法错误。非常感谢任何帮助。
SELECT r.ID, r.FirstName, r.LastName, m.TotalMPs
FROM roster r
INNER JOIN (
SELECT ID, MAX(TotalMPs) as TotalMPs
FROM MPs
GROUP BY ID
) m
ON r.ID = m.ID AND m.TotalMPs <= "10"
WHERE r.eMail IS NOT NULL
AND r.Subscribe = "Y"
AND r.Status = "A"
ORDER BY r.LastName, r.FirstName