sqlserver多表查询语句

表设计如图片。

第1个回答  2013-12-23
select a.*,b.remark,c.content from a,b,c where patindex('%'+convert(varchar,b.id)+'%',a.fb)>0
or patindex('%'+convert(varchar,c.id)+'%',a.fb)>0
第2个回答  2013-12-23
select a.*,b.remark,c.content from A,B,C where 'b'+ltrim(b.id) like '%'+a.fb+'%' and 'c'+ltrim(c.id) like '%'+a.fb+'%'追问

单独运行这语句查询非常慢。加上限制后,如加上b.remark like '%aa%'后没有任何数据出现。我找了下应该有数据的。

追答

你最好把你的表结构贴出来,然后再弄几条数据,你的描述我们都只能那样写写

第3个回答  2013-12-23
select a.*, b.*, c.*
from a join b on a.id=b.id join c on a.id=c.id
where b.remark like '%ddd%' and c.content like '%ffff%'追问

A的id不等于B的id,A与BC的联系是A中的fb字段存储了BC表中的表名及id(如B,1)

追答

这都是咋设计出来的,不明觉厉呀,写出来效率也很低呀
with t(f1,f2,f3) as (select 1,id,remark from b union all select 2,id,content from c)
select a.*,t.*
from a join t on case when left(a.fb,1)='b' then 1 else 2 end=t.f1
and right(a.fb, len(a.fb)-2)=t.f2 and b.f3 like '%xxx%'

本回答被网友采纳
相似回答