mysql - 在 SQL 中,我可以在另一列中获取与它们没有关联的特定值的列中的值吗?
问题描述
假设我有一个包含两列的表:user_guid 和 trait。相同的 user_guid 可以在第二列中以不同的特征出现在表中多次。像这样:
-----------------------
user_guid | trait
-----------------------
a123 | tall
a123 | sings
a123 | blonde
b321 | short
b321 | sings
有没有办法在 trait 列中获取所有没有值“tall”的 user_guid?我正在尝试使用 WHERE NOT EXISTS,但我似乎无法让它工作。
解决方案
一个简单的方法是聚合:
select user_guid
from t
group by user_guid
having sum(trait = 'tall') = 0;
注意:这不会返回完全没有特征的用户。为此,您需要一个单独的用户表:
select u.*
from users u
where not exists (select 1
from t
where t.user_guid = u.user_uid and t.trait = 'tall'
);
推荐阅读
- excel - 检查单元格是否包含特定的子字符串
- c - 如何修复我的自定义 strlcat 以 SIGABRT 终止?
- c# - 我正在尝试在第二行为 comboBox 添加不同的项目
- pandas - Pandas 基于 sessionid 随机拆分/选择数据集
- https - 无法设置 webrick https 服务器 + sinatra + opalrb(sprockets)
- python - 在 Python 中重复执行函数的最佳方法是什么?
- ios - 实现 iOS 自动续订订阅服务器
- swift - 如何在 Xcode 11.1 中创建使视图控制器全屏显示的 Segue
- mongodb - Amazon DocDB 聚合排序是否与 MongoDB 不同?
- python - 让 sympy 写出多项式形式的表达式