我需要从MariaDB源查询表。
有一个包含几个用逗号分隔的值的字段,我不知道如何继续。
就是这种情况:
TABLE: Aphorisms_Categories
Field: id
与有关
TABLE: Aphorisms
Field: categories
问题在于类别通常包含2、3、4、67之类的字符串。
我不知道为什么,原始开发人员决定不创建代表N-M关系的第三张表。但是现在,对我而言,不可能找到一种方法来检索属于类别3的所有格言(例如)。
有什么提示吗?
最佳答案
Shirkam的答案很接近,但是有一个问题:
如果3是该字段的第一个或最后一个类别,即'2,4,33,3',则SELECT * FROM Aphorisms WHERE categories LIKE '%,3,%'
不会抓住它。而且,如果您从LIKE子句中删除逗号,则会在多位数类别上得到误报。
由于您使用的是MariaDB,请使用:SELECT * FROM Aphorisms WHERE categories REGEXP '(^|,)3($|,)'