求一条查询SQL的写法

来源:百度知道 编辑:UC知道 时间:2024/05/18 07:48:22
有一个地区表,结构如下:(分三级)
ID 名称 父ID 所有父ID 级别
1 山东 0 0 0
2 济南 1 1 1
3 长清 2 1,2 2
现在知道要查询的地区ID号为3
那么可以用一条语句所到真实地区 山东 济南 长清 吗?
SELECT id, 名称 FROM 地区表 WHERE (id IN((SELECT 所有父ID FROM 地区表 WHERE id =3)))
上面的语句不对,它要把子查询返回的结果转成INT类型,结果出错.怎么写才好?如果用两条语句来实现的话,就不用说了,我也会.

SELECT id, 名称 FROM 地区表 WHERE id in (SELECT 所有父ID FROM 地区表 WHERE id =3)
以上那个报错,用下面这个,一条sql搞定。

declare @sql varchar(1000),@t varchar(10);SELECT @t=所有父ID FROM cc WHERE id =3;set @t='('+@t+')';set @sql='SELECT * FROM cc WHERE id in '+@t;exec (@sql);

SELECT id, 名称 FROM 地区表 a where id = '3' or
id in (select id from 地区表 b where a.所有父id like '%'+b.id +'%')

换一种思路去做,在编ID的时候采用多位编制,如:1000山东,1100济南,1110长清
查询的时候可以使用:
SELECT id, 名称 FROM 地区表
where id = '1110' and id like '1%00'

这个 牵扯到结构了。基本上一句sql没办法