假设我有三张表如下:
-
PRODUCT表(P)有ID,NAME
-
CATEGORY表(C)具有ID,NAME
-
RELATION表(R)具有ID,PRODUCT_ID,CATEGORY_ID
我目前在产品列表页面上,我想要一个能够按类别名称搜索产品的功能 .
select P.*
from P
where P.id in (select group_concat(distinct R.product_id) from C join R on C.id=R.category_id where C.name like '%something%')
上面的SQL只会给我第一个匹配,但在括号中运行查询将返回多个id . 我该如何纠正?
1 回答
group_concat()
是不必要的:您的查询很好,但通常会写为:
如果多个类别与
like
条件匹配,则此版本可能会返回重复项 .