关键字:广东省|杭州市|福建省数据表customer:province   city
广东省     广州市
广东省     深圳市
福建省     泉州市
四川省     成都市
江苏省     杭州市当前用的sql:SELECT * FROM customer WHERE statusId=1 AND (province REGEXP '^(广东省|杭州市|福建省)$' OR city REGEXP '^(广东省|杭州市|福建省)$') ORDER BY id因为省及市分开了两个字段,而关键字里省及市是混在一起的。
所以相同的关键字不得不用了两次REGEXP,感觉这样效率不大好,不知可有更好的方法?请指点,谢谢。

解决方案 »

  1.   

    便可合并,但如果你的目的是提高效率,则还不如你现在的方法。SELECT * FROM customer WHERE statusId=1 AND concat(province,city) REGEXP'广东省|杭州市|福建省' ORDER BY id
      

  2.   

    SELECT * FROM customer WHERE statusId=1 AND concat(',',province,',',city,',') 
    REGEXP ',广东省,|,杭州市,|,福建省,' ORDER BY id
      

  3.   


    谢谢指点!再问下:
    1、你的意思是说用了concat还不如用or的效率好?刚测试了下,可能是数据量少的原因,这两种方法似乎效率差不多。
    2、用你上面的语句,concat后REGEXP里不能使用^及$?
      

  4.   

    是的,不如直接OR2、用你上面的语句,concat后REGEXP里不能使用^及$?
    由于你的字段合并了,所以不能再使用^$了。