有这样一个表,表名为e
表结构及记录如下:
e_id    ps_id
1       ,1,6,
2       ,2,3,
3       ,4,5,
4       ,3,7,ps_id中存的1 2 3 4...比如说是产品的id,现在我想把负责(,1,2,3,4,5,)五种产品中的任意组合的e_id找出来,上表中,也就是找出e_id为2和3的两条记录。
String p_id = ",1,2,3,4,5,";
我试过了,用like 和in 好象都不行,我用的数据库是MySql,请各位大侠帮忙解决!谢谢!

解决方案 »

  1.   

    select * from e where (left(ps_id,2) like('%,1,2,3,4,5,%')) and (right(ps_id,2) like('%,1,2,3,4,5,%'))
    比较笨的方法,估计还有更好的
      

  2.   

    没用的,我估计他的意思是一条记录会有很多个,1,2,3,4,5,6,6,,7,,8,8,8,这样的东西
    要找出只有12345的,
    上面的那个方法不行应该把字符串按照,来split之后,再判断是否在1,2,3,4,5里面,不过我也不知道如何写这个sql,
      

  3.   

    jialin_2004(老猫)的sql语句好象不行。
     to masse(当午) :不是这样的,一条记录的ps_id里只可能有一个1或2或...., ps_id里存的是多种产品的id,每一种前后都有逗号,比如说e_id=2的这条记录,ps_id里存了两种产品:2和3,这两种产品的前后都有逗号(,2,3,)。
    现在我要把ps_id属于(,1,2,3,4,5,)中任何一种组合的记录找出来,也就是找出上表中e_id为2和3的两条记录。
      

  4.   

    不知道MYSQL有没有子函数,或类似的东东,这样把PS_ID字段作为参数传给子函数,在子函数里用INSTR循环字符串,若有超出范围值的返回FALSE,否则返回TRUE,这样子查询PS_ID为TRUE的记录就可以找到你所要的结果了
      

  5.   

    问题解决了,如下:
    select e_id,ps_id from e where substring(ps_id,2,length(ps_id)-2) in (1,2,3,4,5);
    谢谢各位!
      

  6.   

    这个只能自己做算法吧,自己去拼串,比如select * from e where ps_id =',1,2,'  or ps_id =',2,3,' or...... or ps_id =',1,2,3,4,5,'