gpt4 book ai didi

php - 模糊 DISTINCT 值

转载 作者:可可西里 更新时间:2023-11-01 06:33:57 26 4
gpt4 key购买 nike

我有一个房地产列表数据库,需要返回一个社区列表。现在我正在使用 mysql DISTINCT,它返回所有不同的值。我的问题是有很多社区的名称相似:示例:

Park View Sub 1
Park View
Park View Sub 2
Park View Sub 3
Great Lake Sub 1
Great Lake Sub 2
Great Lake
Great Lake Sub 3

我正在寻找一个简单的 php 或 mysql 解决方案来识别“Park View”和“Great Lake”已经存在并且只返回“Park View”和“Great Lake”。

我最初的想法是如何按长度获取排序顺序,以便短值位于顶部,然后使用 strstr 循环。这听起来像是一项艰巨的任务,我想知道 mysql 或 php 中是否有一个函数可以轻松地做到这一点。

最佳答案

这里有一些你可以尝试的东西;大概您正在寻找完全匹配和接近匹配。

首先寻找完全匹配。然后在 REVERSED 名称上查找 LIKE 匹配项。然后寻找具有最少额外字符的匹配项。

这是一个可以完成所有这些的查询。请注意,如果您希望这样做高效,则需要将颠倒的地名存储在索引列中。

select name 
from (
select name, 0 ordinal
from place
where name = 'Park View'
union
select name, 1 ordinal
from place
where Reverse(Name) like concat(Reverse('Park View'),'%')
union
select name, 2+length(name)
from place
where name like concat('Park View','%')
) a
order by ordinal
limit 1

注意这个 UNION 查询如何使用 ordinal 来找出最佳匹配。

在这里查看:http://sqlfiddle.com/#!2/76a97/9/0

关于php - 模糊 DISTINCT 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12165400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com