test表中flag字段存储文章属性,比如幻灯(h)、推荐(t)、图片(p)等。+----+-------------+
| id | flag        |
+----+-------------+
| 1  | p           |
| 2  |             |
| 3  | c           |
| 4  |             |
| 5  | h,p,f       |
| 6  | h,p,f,s,a,b |
+----+-------------+
6 rows in set (0.00 sec)比如查询字段flag里属性有h的记录怎么写?最好效率高,简单点的。

解决方案 »

  1.   

    select * from tt where find_in_set('h',flag)>0
      

  2.   

    我想到一个:select id,flag from test where flag like '%h%;这个效率是不是要低很多?
      

  3.   

    如果我要查flag为h或f的SQL 应该怎么写?
      

  4.   

    select * from test where FIND_IN_SET('h',flag);这个方法应该是效率最高的一种了。
      

  5.   

    如果我要查flag为h或f的SQL 应该怎么写?select * from test 
    where FIND_IN_SET('h',flag)
    or FIND_IN_SET('f',flag);
    
      

  6.   

    或者参考一下这个贴子中的方法。但效率上不如find_in_sethttp://blog.csdn.net/ACMAIN_CHM/archive/2009/05/01/4141864.aspx
    REGEXP 正则的实现两个字符串组的匹配。