我想要一个mysql查询:
要显示“接近”的重复行,请使用:一个引用和相同的引用+模式“-??”(“-”和2个字符,“?”是随机字符)。
带有id的表的示例,参考:
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-??在table上)。
我的表名是products,简化结构是:
id,reference
我尝试了很多不同的请求都没有成功…这就是为什么我不会发布无用的请求。我不知道我是否很清楚,但这个例子正好说明了我想要什么。谢谢您!
3条答案
按热度按时间ukdjmx9f1#
我想你想要:
如果这两个字符是特定的数字:
或者,如果希望每个组的一行上都有结果:
8yparm6h2#
下面是另一种方法:向包含引用的表中添加一个计算列,减去后面的“-??”。然后在该列上创建索引。
rextester演示:https://rextester.com/olhj35843
n3schb8v3#
您正在查找在同一个表中具有对应项的所有引用,其中两个引用仅相差最后三个字符
'-??'
. 在LIKE
通配符为_
.查询: