寻找有关MYSQL查询的建议

时间:2019-01-27 15:12:06

标签: mysql sql

我有一个图库,其中包含带有ID的图像。一些图像具有多个类别,例如102,120。但是有些图像只有一个类别,例如102。我需要排除仅包含类别102的那些图像的列表。因此,mysql查询如下所示,并且工作正常。

SELECT g.id, g.category FROM `galleries` g WHERE g.display=1 AND g.category NOT LIKE "102"';

我需要排除一个类别84,但是某些图像具有两个类别ID 84,154。

所以我尝试了以下查询,

SELECT g.id, g.category FROM `galleries` g WHERE g.display=1 AND g.category NOT LIKE "102" AND g.category NOT LIKE "%84%"';

我需要列出包含类别154的图像,它们也共享类别84。但是上面的查询没有列出许多包含类别154的图像,这也是因为它们也共享类别84。

我需要建议在显示154和其他图像时列出除102和84外的所有图像。

1 个答案:

答案 0 :(得分:1)

我希望这样的SQL:

select g.image_id
from galleries g
where g.display = 1
group by g.image_id
having sum(category = 102) = 0 and
       sum(category = 84) = 0;

也就是说,我希望id唯一地标识galleries中的每一行,并将另一列称为image_id,作为“图像”的ID。