SELECT 围绕 MySQL 中 INNER JOIN 语句结果的语句
SELECT statement around the result of an INNER JOIN statement in MySQL
我正在使用 MySQL 数据库版本 5.6.17
我有以下 tables
- 用户
- ID
- 用户名
- 系列
- imdbID
- 集
- imdbID
- 赛季
- 集
- imdb投票数
- 系列编号
- 类型
- 标记类型
- ID
- 类型
- 测试又名(系列观察名单)
- ID
- 用户名
- 史诗
- 标记
请注意: 不是我删除了每个 table 中的大部分列以减少问题长度
我设法使用以下 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,但它导致了错误
"Every derived table must have its own alias"
这是修改后的代码
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
它的工作没有任何问题
将现有查询放在 FROM
部分(作为子查询)并应用必要的 GROUP BY
和聚合函数
应该是
select ...
from (the subuery) <alias_name>
group by <alias_name>.some_field
例如别名可以是 sub
我正在使用 MySQL 数据库版本 5.6.17
我有以下 tables
- 用户
- ID
- 用户名
- 系列
- imdbID
- 集
- imdbID
- 赛季
- 集
- imdb投票数
- 系列编号
- 类型
- 标记类型
- ID
- 类型
- 测试又名(系列观察名单)
- ID
- 用户名
- 史诗
- 标记
请注意: 不是我删除了每个 table 中的大部分列以减少问题长度
我设法使用以下 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,但它导致了错误
"Every derived table must have its own alias"
这是修改后的代码
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
它的工作没有任何问题
将现有查询放在 FROM
部分(作为子查询)并应用必要的 GROUP BY
和聚合函数
应该是
select ...
from (the subuery) <alias_name>
group by <alias_name>.some_field
例如别名可以是 sub