sql - 获取具有跨多行的其他列值组合的列值
问题描述
我必须编写一个查询来检索“名称”和“id”的组合等于“名称”和“id”的特定值的“品牌”列表。
+--------+-------+-----+
| brand | name | id |
+--------+-------+-----+
| brand1 | david | 123 |
| brand1 | john | 456 |
| brand1 | adam | 789 |
| brand2 | david | 123 |
| brand2 | stacy | 999 |
+--------+-------+-----+
例如,我想要所有具有匹配行的品牌
name = "david", id = 123 and
name = "john", id = 456
在上表中,“brand1”的行包含“name”和“id”这两种组合。
-- desired result
+--------+
| brand |
+--------+
| brand1 |
+--------+
“Brand2”有“name = david, id = 123”,但没有“name = john, id = 456”,所以我不想要它。
解决方案
您可以使用聚合和having
:
select brand
from t
where (name = 'david' and id = 123) or
(name = 'john' and id = 456)
group by brand
having count(distinct name) = 2;
推荐阅读
- jquery - 将 OnClick 属性与 webpack encore 封装的函数链接
- postgresql - 是否可以使用 Traefik 通过 SSL 代理 PostgreSQL?
- javascript - 我打开导航栏后转换删除。发生什么事?
- android - Android Grid Layout Manager 不居中元素
- javascript - 如何修复“未捕获的 ReferenceError:nameCheck 未定义”错误?
- python-3.x - 在 Excel 中创建一个按钮以运行 Python 脚本
- xamarin - 将 UWP 应用上传到 Microsoft Store 时出现验证错误
- javascript - ExcelJS:Angular App中的“未捕获的EvalError:'unsafe-eval'不是以下内容中允许的脚本来源”
- reactjs - 如何使用打字稿修复错误“属性包含在类型'RefObject'上不存在并做出反应?
- javascript - 如何在ajax调用中获取数据属性