mysql - 选择具有提供的唯一值的行 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 是美食、运动和电影的结合。
解决方案
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 个条目,因此不会返回。
推荐阅读
- email - 使用 Gmail API 发送群发电子邮件
- protocol-buffers - 如何解释协议缓冲区的嵌入式消息二进制线格式?
- exe - 如何从旧的 InstallShield 安装程序的 exe 文件中获取 Setup.rul 文件?
- azure - 有什么方法可以连接到 Azure SQL DB Premium Read Scale-Out 中的特定只读副本?
- c# - 如何访问属性内的属性?
- java - Java War 文件不会在 Eclipse 中使用 WildFly 更新
- android - 无法仅针对特定文件夹开始测试
- python - 按钮文本不更新
- javascript - 承诺异步调用
- html - 在 powershell 中访问 groovy 变量