mysql - 使用 group by 子句获取第二大日期

标签 mysql sql

我的表结构是这样的

catName    class   age
-------------------
AAA        4       19
AAA        3       14
AAA        3       12
AAA        3       9
BBB        7       12
BBB        6       12
BBB        7       17
CCC        8       10
DDD        9       10
DDD        9       11

我想要的结果是按 catName 和 class 获得组的第二大年龄。 所以结果应该是

AAA 3 14
BBB 7 12
DDD 9 10

请帮我找到 MySQL 的查询

最佳答案

这有点棘手,但这是一种方法:

select catname, class,
       (case when count(*) > 1
             then substring_index(substring_index(group_concat(age order by age desc), ',', 2), ',' -1)
             else max(age)
        end) as age
from t
group by catname, class;

关于mysql - 使用 group by 子句获取第二大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41815512/

相关文章:

mysql - 使用条件 WHERE 子句选择表的字段

sql - 将 nvarchar 值转换为数据类型 int 时转换失败

mysql - 使用 IF 语句根据 LEFT JOIN 获取所有字段

php - 在重复键上插入...或更新...设置

python - Django 模型 : Get elements considering their presence as a foreign key in another table

mysql - 如何比较 MYSQL 语句中的行数?

java - INSERT OR IGNORE 插入重复语句

mysql - 在主查询中使用子查询

mysql - 'where clause' 中的未知列。嵌套子查询提高 'ORDER BY'的性能

mysql - 在mysql命令行中检查当前用户