根据下面的表1 ,条件是知道catid=6 怎么根据这个条件 读取下面三行(公司新闻,最新公告,国内新闻)出来.
表1
catid arrchildid      catname
6      6,7,20,151     新闻中心
7        7            公司新闻
20       20           最新公告
151      151          国内新闻 

解决方案 »

  1.   

    select * from tt a inner join (
    select arrchildid from tt where catid=6) b
    on find_in_set(a.arrchildid,b.arrchildid)>0
      

  2.   

    select A.*
    from tb A,tb B
    where B.catid=6  and instr(concat(',',B.arrchildid,','),A.id)>0
    union all
    select * from tb where catid=6;
      

  3.   

    select b.*
    from 表1 a , 表1 b
    where a.catid=6
    and find_in_set(b.catid,a.arrchildid)
      

  4.   

    如果arrchildid是常量,则可以直接用IN, 否则要用FIND_IN_SET()函数。