MYSQL:向结果添加一列,其中包含此行是否包含特定列的最大数量

MYSQL: Add a column to result which contains whether this rows contain max number of a particular column or not

我正在使用 MySQL 5.7,我的 Table 是:

cp_id cp_name cp_version cp_parent_id
1 playlist1 1 1
2 playlist1 2 1
3 playlist1 3 1
4 playlist2 1 4
5 playlist2 2 4
6 playlist3 1 6
7 playlist3 2 6
8 playlist3 3 6
9 playlist4 1 9

从 table 可以看出:

  1. 一个播放列表可以有多个版本,但父 ID 相同。

我要求的结果是: 我想在结果中添加一列,其中包含该行是否是 cp 版本行。

cp_id cp_name cp_version cp_parent_id max_version
1 playlist1 1 1 0
2 playlist1 2 1 0
3 playlist1 3 1 1
4 playlist2 1 4 0
5 playlist2 2 4 1
6 playlist3 1 6 0
7 playlist3 2 6 0
8 playlist3 3 6 1
9 playlist4 1 9 1

提前致谢

在MySQL 8+我们可以使用MAX作为解析函数:

SELECT *, MAX(cp_version) OVER (PARTITION BY cp_parent_id) = cp_verson AS max_version
FROM yourTable
ORDER BY cp_id;

在 MySQL 的早期版本中,我们可以使用连接方法:

SELECT t1.*, t2.cp_version_max = t1.cp_version AS max_version
FROM yourTable t1
INNER JOIN
(
    SELECT cp_parent_id, MAX(cp_version) AS cp_version_max
    FROM yourTable
    GROUP BY cp_parent_id
) t2
    ON t2.cp_parent_id = t1.cp_parent_id
ORDER BY
    t1.cp_id;