gpt4 book ai didi

Mysql "near"只重复一个模式

转载 作者:行者123 更新时间:2023-11-29 04:33:10 24 4
gpt4 key购买 nike

我想要一个 MySQL 查询:

要显示“接近”的重复行,请使用:引用和相同的引用 + 模式“-??” (“-”和 2 个字符,“?”是一个随机字符)。

带有 id、reference 的表的示例:

id reference
1 DGGDL
2 DGGDL
3 HSDKH
4 HSDKH-45
5 2KXQF
6 2KXQF
7 2J6SF
8 2J6SF-442
9 FSM
10 148-54
11 148-54
12 148
13 BWZM-67

我想要这个表上的请求,结果是这样的:

 id reference
3 HSDKH
4 HSDKH-45
10 148-54
12 148

2J6SF-442 不在此处,因为模式仅为“-”+ 2 个字符(442 是 3 个字符,因此它与模式不匹配)。HSDKH 和 HSDKH-45 在结果中,因为 HSDKH-45 匹配“HSDKH-??”和 HSDKH 存在,BWZM-67 不在结果中,因为它匹配“BWZM-??”但表中没有引用“BWZM”。与模式不匹配的所有其他“重复项”都从结果中排除(如 DGGDL,因为表中没有像 DGGDL-?? 这样的引用)。

我的表名是products,简化后的结构是:

id,reference

我尝试了很多不同的请求但都没有成功……这就是为什么我不会发布无用的请求。我不知道我是否很清楚,但是这个例子显示了我想要的。谢谢!

最佳答案

我想你想要:

select t.col
from t
where exists (select 1
from t t2
where t2.col like concat(t.col, '%-__') or
t1.col like concat(t2.col, '%-__')
);

如果这两个字符具体是数字:

              where t2.col regexp concat(t.col, '-[0-9]{2}$') or
t1.col regexp concat(t2.col, '-[0-9]{2}$')

或者,如果您希望每组的结果在一行中:

select group_concat(t.col)
from t
group by substring_index(t.col, '-', 1)
having sum(t.col like '%-__') > 0 and
sum(t.col not like '%-__') > 0;

关于Mysql "near"只重复一个模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53412319/

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