表是这样的
ID | TypeName | F_ID |
---|---|---|
1 | 电脑 | 0 |
2 | CPU | 1 |
3 | 显卡 | 1 |
4 | 主板 | 1 |
5 | 蔬菜 | |
6 | 白菜 | 5 |
7 | 黑菜 | 5 |
如何使用一条sql 将查出的数据
ID | TypeName | F_ID | F_Name |
---|---|---|---|
1 | 电脑 | 0 | |
2 | CPU | 1 | 电脑 |
3 | 显卡 | 1 | 电脑 |
是不是可以把这个看成两张表来处理 第一张表是 select * from label1 where F_ID=0
然后 select * from label1 innerjoin(select * from label1 where F_ID=0) as label2 on label1.F_ID=label2.ID
where F_ID>0
假设表名为tt
SELECT
t1.ID,t1.TypeName,t1.F_ID,t2.TypeName as F_Name
from tt t1
left join tt t2
on t1.F_ID = t2.ID
where 1=1
and t1.ID <= 3
没有测试,把表名替换了执行一下看有无错误
select a.*, (select b.typename from b where b.id = a.f_id) F_Name
from b a
where a.id < 4;
select a.*,b.TypeName as F_NAME from Test1 a,Test1 b where a.F_ID=b.ID
union select *,'' F_NAME from Test1 where ISNULL(F_ID,'')='' OR F_ID=0