sql - 选择在 SQL 中具有精确指定关联的条目
问题描述
例如,如果某个实体可以有多个标签,并且使用entity_tag
包含entity_id
和的附加表来描述关联tag_id
,我如何选择所有具有某些tag_id
s 集的实体?
基本上是这样的:
select entity_id
from entity_tag et
where (select tag_id
from entity_tag
where entity_id = et.entity_id) = (1, 2, 3)
解决方案
查找 entity_tag 包含实体的所有 3 个标签的实体,甚至更多。
select entity_id
from entity_tag
where tag_id in (1,2,3)
group by entity_id
having count(distinct tag_id)=3
3个标签
select entity_id
from entity_tag
group by entity_id
having count(distinct case when tag_id in (1,2,3) then tag_id else 0 end) = 3
and min(case when tag_id in (1,2,3) then tag_id else 0 end) > 0
推荐阅读
- r - 向 shp 添加数据/值会产生错误。怎么了?
- php - 使用 Google Anda 登录 PHP 从 Google Blogger API 获取所有博客
- python - 如何在python中的for循环中附加列表
- spring - 在Spring Boot中测试而不影响数据库
- c++ - 如何在空数组中添加用户给出的字符串并在 C++ 中查找它的长度
- java - 如何使用 Thymeleaf 和 Spring boot(使用 JS)在一页上编辑用户
- java - 当 K8s 健康检查重新启动 pod 时创建 JVM heapdump - 没有发生 OOM
- php - 如何简化 PHP 类
- javascript - Angular 8:选择 ng-content 的第一个元素
- python - 未定义 tkinter 中的条目小部件