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:选择具有复杂列的不同的主要内容,如果未能解决你的问题,请参考以下文章