Php MySQL在_集中查找_(array1,array2)

Php MySQL在_集中查找_(array1,array2),php,mysql,find-in-set,Php,Mysql,Find In Set,可以在逗号分隔的列中搜索数字数组吗 我知道这是可能的 SELECT * FROM products WHERE FIND_IN_SET('1', '1,3,5') > 0 但这也有可能吗 SELECT * FROM products WHERE FIND_IN_SET('1,2', '1,3,5') > 0 如果列中有1或2,则应返回>0 如果你知道另一种方法,就告诉我 谢谢否,但您可以多次使用在集合中查找 SELECT * FROM products WHERE FIND_IN

可以在逗号分隔的列中搜索数字数组吗

我知道这是可能的

SELECT * FROM products WHERE FIND_IN_SET('1', '1,3,5') > 0
但这也有可能吗

SELECT * FROM products WHERE FIND_IN_SET('1,2', '1,3,5') > 0
如果列中有1或2,则应
返回>0

如果你知道另一种方法,就告诉我


谢谢

否,但您可以多次使用
在集合中查找

SELECT * FROM products
WHERE FIND_IN_SET(1, '1,3,5') > 0
   OR FIND_IN_SET(2, '1,3,5') > 0

保留逗号分隔的列而不是规范化数据库有什么特别的原因吗?@JoachimIsaksson规范化数据库的意义是什么?这意味着您不在数据库中存储逗号分隔的值,而是创建一个单独的表,每个值有一行并引用原始表。例如,请参见为什么在数据库中存储逗号分隔的列表通常是一个坏主意。@JoachimIsaksson非常感谢bro:)直接的方法是创建一个
user\u class
表,每个学生/班级有一行,其中包含一个studentid字段和一个classid字段,即,如果student1和student2都注册了class1,student1也注册了class2,那么将有3行,
student1-class1
student2-class2
student1-class2
。这使得计算一个类中注册学生的数量变得非常简单,而在学生表中使用逗号分隔的列表很难做到这一点。