比如我有一个表
id   name   class
1    张三    1,3,7,8
2    李四    2,3,8,9
3    王五    4,5,3,7
4    赵六    3,4,5,6
5    杨七    1,2,5,8
6    冯八    3,1,2,7
我要通过class的一个特殊条件来查询出结果,比如我选择了3,9,4,我如何查出满足不连续的包含这三个分别字符的列。也就是以上数据中只要里面包含3,9,4就查询出来,并不一定要连续3,9,4.我想实现的就是不要连续字符。结果应该是
id   name   class
1    张三    1,3,7,8
2    李四    2,3,8,9
3    王五    4,5,3,7
4    赵六    3,4,5,6
如何实现这个查询条件。LIKE,find_in_set都不行,他们只能查询连续的一串字符,不能拆分对比。

解决方案 »

  1.   

    你的数据库设计不是很科学,如果每个人选择的都是四门课,不如直接将数据库设置为
    id   name   class1 class2 class3 class4
    1    张三    1       3      7      8
    2    李四    2       3      8      9
    查询的时候用逻辑或就行。仅供参考,希望对你有帮助!
      

  2.   

    select * from tbname where (class like '%3%' or class like '%9%' or class like '%7%')
    是这么个意思?
      

  3.   

    既然你的 class 列是聚类的,那么必定有一个 class 表来保存相关信息
    那么
    select * from user, class where find_in_set(class.id, user.class) and class.id in (3,9,4)
    不就可以了么?