SqlServer LEFT JOIN 不用on 用LIKE的问题

发布于 2022-09-03 12:22:03 字数 291 浏览 6 评论 0

table A 商品表

id cat_ids
1 1,2,3
2 1,2
3 1

table B 分类表

cat_id
1
2
3

表结构如上 如要搜索出 b表每个分类 含有多少个商品,应如何编写sql

本人想到的是
select count(*) as goods_num from b left join a on b.cat_id like 'a.cat_ids'

不过行不通,望大牛们指点

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

水中月 2022-09-10 12:22:03

用标量子查询就可以的,我平时使用的是mysql

select cat_id,(SELECT COUNT(1) FROM A WHERE FIND_IN_SET(b.cat_id,cat_ids)>0) AS NUM
from B b
紫竹語嫣☆ 2022-09-10 12:22:03
;WITH a(id,cat_ids) AS (
    select 1,'1,2,3' UNION ALL
    select 2,'1,2' UNION ALL
    select 3,'1'
),b AS (
    SELECT * FROM ( VALUES(1),(2),(3)) b(cat_id)
)
SELECT b.cat_id,COUNT(0) AS num
FROM b LEFT JOIN a ON CHARINDEX(','+CONVERT(VARCHAR,b.cat_id)+',',','+a.cat_ids+',')>0
GROUP BY b.cat_id

cat_id num
1 3
2 2
3 1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文