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 關注
- 558 瀏覽
添加回答
舉報
0/150
提交
取消
