gpt4 book ai didi

php - 如果连接查询中没有 B 值,则获取具有 A 值的项目(重复项目)

转载 作者:行者123 更新时间:2023-11-29 08:14:34 25 4
gpt4 key购买 nike

抱歉,如果标题含糊不清。

我有这些表:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com