我有一个表,其中包含约60万个项目,由ID和条形码标识。
这些条形码中有一些是重复的,但不是完全相同,因为有些有前缀,有些没有(例如7290001234567与1234567)
我需要找到所有条形码相同且带有和不带有前缀的商品-输出应为:
id barcode
1 7290001234567
2 1234567
...
我尝试了以下操作,但由于子查询返回多个项目而导致功能中断,因此无法正常工作:
select *
from item
where barcode like concat("%", (select barcode from item where char_length(barcode) <= 8));
最佳答案
您可以使用子查询并加入
select *
from item
INNER JOIN (
select barcode from item where char_length(barcode) <= 8)
) T ON item.barcode like concat('%', T.barcode)
或使用自我联接
select *
from item i1
INNER JOIN item i2 on i1.barcode like concat('%', i2.barcode)
确保您在条形码上有索引..(可能是一个缓慢的查询)
关于mysql - 在列中查找其他值的子字符串的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57507225/