... where keytype in (xxx)

解决方案 »

  1.   

    表:A 字段:keytype 
    keytype只存储三个值分别1,2,4但一条记录只能存一个数值 
    比如 
    aid keytype name 
    1  2      中国1 
    2  1      中国2 
    3  2      中国3 
    4  1      中国4 
    5  4      中国5 
    搜索条件有这几种可能组合: 
    1,2 
    1,4 
    2,4 
    1,2,4 
    也有可能是单选比如: 



    这样的sql语句如何去实现呢
      

  2.   

    //$keytype以数组的形式保存你要的关键字$keytype = implode(",",$keytype);$sql="select * from table where keytype in $keytype";
      

  3.   

    检查一下,如果keytype只有一个的情况下,用where keytype = xxx
    如果多于一个的情况下,用where keytype in (xxx)
      

  4.   

    $keytype = join(",",$keytype);$sql = "select * from A where  FIND_IN_SET(keytype,$keytype )>0"
      

  5.   

    一个$keytypeselect * from table where keytype = $keytype二个的话select * from table where keytype = $keytype[0] or keytype = $keytype[1]三个的话select * from table where keytype = $keytype[0] or keytype = $keytype[1] or keytype = $keytype[2][code=PHP]
      

  6.   


    用LOCATE函数也可以。
    $sql = "select * from A where  LOCATE(keytype,$keytype )>0"
      

  7.   

    IN要效率方面是不是要比OR慢呢
      

  8.   

    6W条的数据测试
    IN的效率要比OR高些. 字段加了索引以后,
    IN的效率要比OR高些加索引比不加索引速度简单不能比.所以建议加索引.