mysql - 计数准确的地方不多或少 mysql

标签 mysql sql database

我有 one_to_many 关系,其中我有 3 个表 imagesitemsimage_items .. 每张图片都可以有一个或多个项目,我想在传递项目/项目 id/id 的地方进行查询,并根据此图像中的项目数获取特定图像(正好是一个图像)...

这是我到目前为止尝试过的方法,但它有一个问题,它给了我这个数量或更多的图像,我不确定这个逻辑或结构是否首先有效:

SELECT `image_items`.`image_id`
FROM `image_items`
WHERE `image_items`.`item_id` IN(1, 2)
GROUP BY `image_items`.`image_id`
HAVING count(image_items.image_id) = 2 

enter image description here

这是 fiddle

假设图像 (1) 有项目 (1,2,3),图像 (2) 有项目 (1,3),图像 (3) 有项目 (1,2) ..假设我想要图像正好有 (1,2) .. 对于我的查询,即使有不同的查询,当我只想要图像 (3) 时,它也会给我图像 (1,3)。

最佳答案

删除 WHERE 子句并在 HAVING 子句中添加一个条件:

SELECT image_id
FROM image_items
GROUP BY image_id
HAVING 
  COUNT(DISTINCT item_id) = 2 
  AND
  SUM(item_id NOT IN (1, 2)) = 0

参见 demo .
结果:

| image_id |
| -------- |
| 4        |

关于mysql - 计数准确的地方不多或少 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57195827/

相关文章:

php - 类方法的 beginTransaction PDO

java - 将 HSQLDB 与 SQL Maven 插件和 jOOQ 结合使用

database - 函数依赖的数量

java - 为 jdbc :mysql 在 mariadb 中禁用持久连接

MySQL按日期时间字段采样数据

mysql - 具有多个不同标准的 UNION SELECT,其中没有真正的 FK

mysql - 在另一个表 MySQL 上加入 COUNT 个更改

mysql - 具有多个条件的 SELECT GROUP

mysql - Oracle数据库链接速度有多快?

mysql - PostgreSQL 中的更新顺序