18 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
@yling:
下面这样试试呢:
select bname,count(1) from
(select b.name as bname, a.cid,a.family from b join a where a.family like '%' + b.name + '%')
group by bname
交互式爱情
TA贡献1712条经验 获得超3个赞
同意楼上的,呵呵。不过like可能效率不高,找找有没有其他的sql函数,来判断一个字段是否在另一个字段中。我知道在mysql里面,LOCATE的效率比like的高点
慕容森
TA贡献1853条经验 获得超18个赞
@wang_yb:
select b.name as bname, a.cid,a.family from b join a where a.family like '%' + b.name + '%' 这个语句不行啊,我试了,报错,两个表没有关联字段,所以错的,应该是。
后面的where那个条件不得行。
Smart猫小萌
TA贡献1911条经验 获得超7个赞
不是的说错了,select b.name as bname, a.cid,a.family from b join a where a.family like '%' + b.name + '%' 这样是查不出数据来的,感觉like '%' + b.name + '%' 无效
白板的微信
TA贡献1883条经验 获得超3个赞
这种方式是不行的,要在另一个表取模糊匹配的字段,但是我这么写好像也不对啊
select a.cid,a.family,b.name from a join b on a.family like '%' + b.name + '%'
Qyouu
TA贡献1786条经验 获得超11个赞
已近解决了,lz看下这段代码行吗?
select [name],(select COUNT(0) from b where [name]=c.[name]) as 'Count'
from (select distinct [name] from a join b on a.famliy like '%'+b.name+'%' where a.cid=2) c
白猪掌柜的
TA贡献1893条经验 获得超10个赞
这个问题解决了,那你的问题就解决了
比如a表的cid=1是,你能否将 famliy转换成多行
或者 like 后面加字段名,但是我试过貌似不行,
这是我写的
select a.name,(select count(name) from b where name=a.name) as '统计' from a where cid=1
叮当猫咪
TA贡献1776条经验 获得超12个赞
建议用C#代码写,sql有的难搞,一下仅提供思路:
1.查询a表的family值,然后分割填充到集合,如:list
2.对list循环,用每个值作为条件去统计B表中的basename
- 18 回答
- 0 关注
- 494 浏览
添加回答
举报
0/150
提交
取消