首页 > 解决方案 > 选择具有提供的唯一值的行 ID

问题描述

我有一个名为 category 的表,用户可以在其中存储支出类别的值。在这里,食物和运动是一种组合,它们在数据库中具有相同的 cat_id。

cat_id  spending_category
1       food
1       sport
2       food
2       sport
2       movie
3       food
3       movie

我想查询此表并找出是否已经存在仅包含食物和运动的类别组合。如果是,则返回该 id。我想使用该 id 来标记相似的 id,这意味着我应该在这里得到 1。不是 2,因为 id 2 是美食、运动和电影的结合。

标签: mysqldatabase

解决方案


SELECT cat_id
FROM category
GROUP BY cat_id
HAVING SUM(spending_category = 'food') + SUM(spending_category = 'sport') = COUNT(*)

SUM() 函数中的条件返回 1 或 0。只需将其与每组中的条目数进行比较即可。

cat_id 2 将有 3 个条目,因此不会返回。


推荐阅读