作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
抱歉,如果标题含糊不清。
我有这些表:
image : id , title
image_tags : image_id , tag
image_categories : image_id , category_id
在图像页面中,我想通过标签获取来自同一类别的相似图像,但我想排除一些类别
所以这是我的查询:(假设我当前的图像有类别:1,标签:a,b
,我想忽略类别:6,7
)
SELECT image_tags.image_id
FROM image_tags
JOIN image_categories
ON image_categories.image_id = image_tags.image_id
WHERE image_tags.tag IN ( 'a', 'b' ) && image_categories.category_id IN ( 1 )
&&
image_categories.category_id NOT IN ( 6, 7 )
这可行,但如果我有
image_tags ( image_id , tag ) :
`128` , `a`
--------------------------------------------
image_categories (image_id , category_id ) :
`128` , `1`
`128` , `6`
由于 image_categories
中的第一行,我将获取 id = 128
的图像
我必须以某种方式检查并忽略图像128
,因为如果第二行(category_i:6
)
希望我的问题不是很令人困惑
最佳答案
对 image_id
进行分组,并在 HAVING
子句中使用合适的聚合函数测试类别:
SELECT image_id
FROM image_tags JOIN image_categories USING (image_id)
WHERE image_tags.tag IN ('a','b')
GROUP BY image_id
HAVING SUM(image_categories.category_id IN (1))
AND NOT SUM(image_categories.category_id IN (6,7))
关于php - 如果连接查询中没有 B 值,则获取具有 A 值的项目(重复项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20874413/
我是一名优秀的程序员,十分优秀!