我有一个四键表,我想找到最短的唯一四键,它们是其他值的子字符串(特别是其他值以这些四键值开头的地方(,即包含Bing瓦片的最大值。我该怎么办?我的第一个想法是为我使用的缩放级别生成所有可能的子字符串,只需为每个长度创建一列,并寻找最短的唯一子字符串,但我不知道如何实际执行比较。考虑以下示例:
我有一张看起来像的桌子
quadkey |
---|
121310 |
12131022 |
1213102 |
00321023 |
0032102 |
如果我理解正确,您可以使用相关的子查询:
select t.*,
(select t2.quadkey
from t t2
where t.quadkey like t2.quadkey || '%'
order by t2.quadkey asc
limit 1
) as shortest_quadkey
from t;
对于大量数据,这将具有非常差的性能。