繁体   English   中英

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

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

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

cp_id cp_name cp_version cp_parent_id
1个 播放列表1 1个 1个
2个 播放列表1 2个 1个
3个 播放列表1 3个 1个
4个 播放列表2 1个 4个
5个 播放列表2 2个 4个
6个 播放列表3 1个 6个
7 播放列表3 2个 6个
8个 播放列表3 3个 6个
9 播放列表4 1个 9

从表中可以看出:

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

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

cp_id cp_name cp_version cp_parent_id 最大版本
1个 播放列表1 1个 1个 0
2个 播放列表1 2个 1个 0
3个 播放列表1 3个 1个 1个
4个 播放列表2 1个 4个 0
5个 播放列表2 2个 4个 1个
6个 播放列表3 1个 6个 0
7 播放列表3 2个 6个 0
8个 播放列表3 3个 6个 1个
9 播放列表4 1个 9 1个

提前致谢

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

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM