【发布时间】:2021-10-25 19:17:15
【问题描述】:
所以我创建了一个 sql fiddle 来更清楚地解释我的问题:
http://sqlfiddle.com/#!9/3122282/1
如您所见,我有 3 个表,其中 1 个链接其他 2 个。
如果我说“给我(绿色或红色)和 PET(狗)的产品”,我想这样做?
我试过了:
select `ptl`.`product_id`
from `tags` inner join `tags` as `ptl`
on `tags`.`id` = `ptl`.`tag_id`
where ((`tags`.`tag` = "color" and `tags.value` in ("green", "red"))
or (`tags`.`tag` = "pet" and `tags.value` in ("dog")))
having count(distinct `ptl.tag_id`) = 2
// 2 在这种情况下是标签“类别”的数量。
但这似乎不起作用。由于have只是检查计数,它还将返回带有2个颜色标签的产品,没有任何宠物。
【问题讨论】:
-
您能否真正分享在您发送的小提琴链接上运行的查询
标签: mysql sql subquery having where-in