我需要从表中获取数据,其中行值是用逗号分隔的字符串,例如:5,10,16,25,7
我也在使用LEFT JOIN
,所以我需要这样的东西:< / p>
// ...
SELECT ... s.`other_thing`
LEFT JOIN `something` s
ON w.`whatever` = REGEXP CONCAT('(,|^)', s.`id`, '(,|$)')
// ...
我需要得到以下内容:(,|^)5(,|$)
上的ON
编辑:我用一个简单的LIKE CONCAT('%', s.id, '%')
编辑2:如果要连接正则表达式,可以使用:REGEXP CONCAT('(^|,)(',s.id,')(,|$)')
答案 0 :(得分:2)
我强烈建议不要使用此数据模型。您的下一个问题可能与性能有关,而且实际上没有希望。您应该为列表使用一个联结/关联表,而不是在一个字符串中存储多个值。
有时候,我们被别人的非常,非常,非常糟糕的设计决策所束缚。在这种情况下,MySQL具有帮助的功能:
SELECT ... s.`other_thing`
FROM x LEFT JOIN
something s
ON find_in_set(s.id, x.really_bad_list_format) > -