表(abc)id fid
1 0
2 1
3 1
4 1
说明:
fid=0,说明是顶级栏目。
要求是,只给出你id,如何求出id为顶级栏目下的所有内容,如果id=2,那么也会显示它下面的内容。
只不过父类id=1,会显示的包括有:1,2,3,4,请问下要怎么写?
1 0
2 1
3 1
4 1
说明:
fid=0,说明是顶级栏目。
要求是,只给出你id,如何求出id为顶级栏目下的所有内容,如果id=2,那么也会显示它下面的内容。
只不过父类id=1,会显示的包括有:1,2,3,4,请问下要怎么写?
select * from book where id in(select fid FROM book where id=2)
union
select * from book where fid in (select fid from book where id=2 )
可以先判断一下fid是不是0。
我感觉这里应该用MYSQL里的IF判断
应该是
select if(fid=0,(select GROUP_CONCAT(id) from abc where fid=1 group by fid),fid)as result from abc where id=1
这里的GROUP_CONCAT是把多条记录合并为一条记录
大致意思是:查询abc表如果这条记录的fid=0就执行SQL语句,查询fid=1的数据然后多条结合返回来,如果fid不为0就显示fid值
但是有相问题就是select GROUP_CONCAT(id) from abc where fid=1 group by fid这个语句直接查询可以抬2,3,4但是放到子查询就只显示第一个,不知道是什么原因,还请高手帮忙看一下