sql语句模糊查询返回结果再查的问题
只有一个表,结构如下:ID编码名称11一类名称211二类名称3111三类名称41111项目名称51112项目名称61113....72....821....9211......
只有一个表,结构如下:
ID 编码 名称
1 1 一类名称
2 11 二类名称
3 111 三类名称
4 1111 项目名称
5 1112 项目名称
6 1113 ....
7 2 ....
8 21 ....
9 211.....
父项编码总等于它编码的前1/2/4/6位
使用LIKE模糊查询项目名称的同时,返回它的所有父项
像这样:
1 第一类
11 第二类
111 第三类
1111 符合like的项
我试图使用 select * from 表名 where 编码=left(select 编码 from 表名 where 名称 link '%关键字%',1) or ...left(,2)...left(,4)....left(,6) 这样的查询,返回错误
应该如何做? 展开
ID 编码 名称
1 1 一类名称
2 11 二类名称
3 111 三类名称
4 1111 项目名称
5 1112 项目名称
6 1113 ....
7 2 ....
8 21 ....
9 211.....
父项编码总等于它编码的前1/2/4/6位
使用LIKE模糊查询项目名称的同时,返回它的所有父项
像这样:
1 第一类
11 第二类
111 第三类
1111 符合like的项
我试图使用 select * from 表名 where 编码=left(select 编码 from 表名 where 名称 link '%关键字%',1) or ...left(,2)...left(,4)....left(,6) 这样的查询,返回错误
应该如何做? 展开
3个回答
展开全部
查询结果数目大于一时,其左边不能用等号:
select * from 表名 as a where exists(select 编码 from 表名 where 名称 like '*关键字*' and (left(编码,1)=a.编码 or left(编码,2)=a.编码 or left(编码,4)=a.编码 or left(编码,6)=a.编码) )
如果是在access里写的话,通配符用 * ,如果是在程序里写的话,通配符还是%(数据库引擎会自动把%转为*)
select * from 表名 as a where exists(select 编码 from 表名 where 名称 like '*关键字*' and (left(编码,1)=a.编码 or left(编码,2)=a.编码 or left(编码,4)=a.编码 or left(编码,6)=a.编码) )
如果是在access里写的话,通配符用 * ,如果是在程序里写的话,通配符还是%(数据库引擎会自动把%转为*)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select a.* from 表名 a,(select * from 表名 where 名称 link '%关键字%') b on a.编码=b.编码 where a.编码=left(b.编码,1) or a.编码=left(b.编码,2) or a.编码=left(b.编码,4) or a.编码=left(b.编码,6)
--像上面这样,用联合查询即可。
--像上面这样,用联合查询即可。
更多追问追答
追问
我试了一下,提示语法错误,怎么回事,我是VB+MDB环境
追答
MDB里的通配符应该用*而不是%,你改一下。
还有提示语法错误,看看是提示的哪里?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
任何一个查询结果都可以当成一张表
再次查询
比如我的sql语句是
select * from person where age>10 --大于10岁我们可以对这个结果再次查询如下
select b.* from (select * from person where age>10) b where b.sex='男' --大于10岁的男性
再次查询
比如我的sql语句是
select * from person where age>10 --大于10岁我们可以对这个结果再次查询如下
select b.* from (select * from person where age>10) b where b.sex='男' --大于10岁的男性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询