mariadb:选择具有复杂列的不同

Posted

技术标签:

【中文标题】mariadb:选择具有复杂列的不同【英文标题】:mariadb: select distinct with complex columns 【发布时间】:2017-10-23 15:51:10 【问题描述】:

我有这样的桌子

key | value
item:yyy:revs:1 | somevalue
item:xxx:revs:0 | somevalue
item:yyy:revs:5 | somevalue
item:xxx:revs:3 | somevalue

我现在想为每个项目 (xxx, yyy) 选择具有最高修订号的行。仅在此示例中:

item:yyy:revs:5 | somevalue
item:xxx:revs:3 | somevalue

通常我会使用 distinct,但因为“项目 ID”只是键列的子字符串,我不知道如何管理它。

【问题讨论】:

【参考方案1】:

您是否有机会分解“复杂”列,以便您需要的值单独存在于一列中?如果是这样,则查询简单且高效。否则我们需要一个蛮力解决方案......

SELECT MAX(SUBSTRING_INDEX('item:xxx:revs:3', ':', -1))
    FROM t
    GROUP BY SUBSTRING_INDEX('item:xxx:revs:3', ':', 3);

【讨论】:

以上是关于mariadb:选择具有复杂列的不同的主要内容,如果未能解决你的问题,请参考以下文章

比较所有列的 MariaDB/MySQL 的替代方案

同一个 MariaDB 列的多个排序规则?

SQL:在 MySQL/MariaDB 中选择具有窗口函数的某些行

MariaDB - 使用“AS”创建的列的默认值为 1024 [重复]

数据库对比:选择MariaDB还是MySQL?

MariaDB/mysql SQL查询问题:我想根据另一列的组值对一列进行部分总和