表一:client(id,compay,follow_pr,hezuo,type,web_url)
记录:(200,广州潮汛网络,lic,1,软件公司,http://www.yava.com.cn)
记录2:(201,bbddd,gg,0,SP,http://www.yava.com)表二:alias_name(alias_id,client_id,name)
记录1:(200,200,广州雅薇)
记录2:(201,201,广州亚商)现在我想搜索出"广州潮汛"或"广州雅薇"或"广州亚商"的公司名称是否存在?
是通过字段compay或name来匹配的.
我用的sql语句是:
select * from client a,alias_name b where a.id=b.client_id and
a.compay like '%广州雅薇%' or b.name like '%广州雅薇%'
(上面的匹配字段可以是广州亚商或广州潮汛)得出的答案有问题:
如果我搜索的是广州雅薇或广州亚商,得到的数据中出现两条结果:而且name字段的值都是广州雅薇或广州亚商
这是为什么?
记录:(200,广州潮汛网络,lic,1,软件公司,http://www.yava.com.cn)
记录2:(201,bbddd,gg,0,SP,http://www.yava.com)表二:alias_name(alias_id,client_id,name)
记录1:(200,200,广州雅薇)
记录2:(201,201,广州亚商)现在我想搜索出"广州潮汛"或"广州雅薇"或"广州亚商"的公司名称是否存在?
是通过字段compay或name来匹配的.
我用的sql语句是:
select * from client a,alias_name b where a.id=b.client_id and
a.compay like '%广州雅薇%' or b.name like '%广州雅薇%'
(上面的匹配字段可以是广州亚商或广州潮汛)得出的答案有问题:
如果我搜索的是广州雅薇或广州亚商,得到的数据中出现两条结果:而且name字段的值都是广州雅薇或广州亚商
这是为什么?
select * from client a,alias_name b where a.id=b.client_id and
(a.compay like '%广州雅薇%' or b.name like '%广州雅薇%')
a.compay like '%广州雅薇%' or b.name like '%广州雅薇%'如果不加括号 那么 a.id=b.client_id and a.compay like '%广州雅薇%' 这个先结合 返回false 因为表1中没有广州雅薇或者广州亚商 这样造成a.id=b.client_id 无效。会出现两表的笛卡尔积
200,广州潮汛网 200,广州雅薇
200,广州潮汛网 201,广州亚商
201,bbddd 200,广州雅薇
201,bbddd 201,广州亚商然后 b.name like '%广州雅薇%' 生效 出现双重数据
恩,我试了你说的.很对,是and 与or的优先级不同而导致的结果.