我使用MySQL数据库版本5.6.17
我有以下表格
请注意:我没有删除每个表中的大多数列以减少问题长度
我设法使用以下SQL代码提取以下数据(所有用户数据,所有剧集数据,所有系列数据)
SELECT e.*, u.username, s.*
FROM test w
INNER JOIN users u
ON u.ID = w.userid
INNER JOIN episode e
ON w.epid = e.imdbID
INNER JOIN series s
ON e.seriesID = s.imdbID
WHERE e.seriesID IN (SELECT (imdbID) FROM series)
AND w.userid = 1
但我想对该SQL语句的结果进行另一个操作
我想从每个系列中获取它使用SQL语句从该系列中获得的那个季节的最大季节数和最大剧集数。
到目前为止,每次我尝试在前一个代码之前编写任何代码时,它总是给我一个错误,除了语法错误之外没有解释。
更新1:
尝试了我的代码周围的GROUP BY,但它导致了错误
"每个派生表必须有自己的别名"
这是修改后的代码
SELECT MAX(e.season) FROM
(SELECT e.seriesID, u.username, e.imdbID AS "episodeID"
FROM test w
INNER JOIN users u
ON u.ID = w.userid
INNER JOIN episode e
ON w.epid = e.imdbID
INNER JOIN series s
ON e.seriesID = s.imdbID
WHERE e.seriesID IN (SELECT (imdbID) FROM series)
AND w.userid = 1)
GROUP BY seriesID
更新2: 更改了代码以将错误修复为以下
SELECT MAX(x.season), max(x.episode) FROM
(SELECT e.seriesID, u.username, e.imdbID AS "episodeID", e.season, e.episode
FROM test w
INNER JOIN users u
ON u.ID = w.userid
INNER JOIN episode e
ON w.epid = e.imdbID
INNER JOIN series s
ON e.seriesID = s.imdbID
WHERE e.seriesID IN (SELECT (imdbID) FROM series)
AND w.userid = 1) as x
GROUP BY x.seriesID
它没有任何问题
答案 0 :(得分:1)
将现有查询放在FROM
部分(作为子查询)并应用必要的GROUP BY
和汇总函数
应该是
select ...
from (the subuery) <alias_name>
group by <alias_name>.some_field
e.g。别名可以是sub