我的数据库结构类似如下:
ID Name
... ...
2 中国河北省石家庄市
3 中国河北省石家庄市新华区
4 中国河北省石家庄市长安区
5 中国河北省保定市
7 中国河北省保定市新华区
8 中国河北省保定市长安区
10 中国河南省郑州市
11 中国河南省郑州市AAA区
12 中国河南省郑州市BBB区
13 中国河南省驻马店市
14 中国河南省驻马店市XXX区
15 中国河南省驻马店市YYY区
.... ...
自动编号 已排序好了
现在要求通过查询实现此功能:
例如:输入关键字“中国” 则 2,5,10,13 号记录被筛选出
输入关键字“中国河北省” 则 2,5 被选出
输入关键字“中国河南省” 则 10,13 号记录被选出
输入关键字“中国河北省石家庄市” 则只应有2号记录被选出
也就是说,在一个查询中,只筛选出符合条件的主记录,比如查询中国河北省石家庄市时,有三个符合条件,但是后两个是前一个子记录,所以查询结果中不显示,请问高手这个Sql语句怎么实现????
10 个解决方案
#1
select Name from <表的名字> where name like '%' + <关键字> +'%'
#2
这样不行!麻烦您先看清楚题好不好??
#3
加一个字段识别是否为子记录
#4
好象还要其他属性,比如类别:省、市、区... 形式为 "char ID, integer type"就很容易了
select table.id from table where left(id,len(part_name))=part_name and type=...
select table.id from table where left(id,len(part_name))=part_name and type=...
#5
有一个笨想法,就是先select*再将纪录逐条判断,是不是很累呀?
#6
select name from ... where name like 关键字+‘%市’
#7
select id from table where name like inputkeyword+'%市';
#8
同意 Hoarfrost(霜)
#9
>>在一个查询中,只筛选出符合条件的主记录
看不到你的主纪录和子纪录是怎么关联的???怎么会有这种数据库的设计???
看不到你的主纪录和子纪录是怎么关联的???怎么会有这种数据库的设计???
#10
多加一个条件吧
#1
select Name from <表的名字> where name like '%' + <关键字> +'%'
#2
这样不行!麻烦您先看清楚题好不好??
#3
加一个字段识别是否为子记录
#4
好象还要其他属性,比如类别:省、市、区... 形式为 "char ID, integer type"就很容易了
select table.id from table where left(id,len(part_name))=part_name and type=...
select table.id from table where left(id,len(part_name))=part_name and type=...
#5
有一个笨想法,就是先select*再将纪录逐条判断,是不是很累呀?
#6
select name from ... where name like 关键字+‘%市’
#7
select id from table where name like inputkeyword+'%市';
#8
同意 Hoarfrost(霜)
#9
>>在一个查询中,只筛选出符合条件的主记录
看不到你的主纪录和子纪录是怎么关联的???怎么会有这种数据库的设计???
看不到你的主纪录和子纪录是怎么关联的???怎么会有这种数据库的设计???
#10
多加一个条件吧