sql - Postgresql - 如何从没有出现特定数据的同一个表中获取记录
问题描述
在 PostgreSQL 中,如果我有这种记录:
|---------------------|------------------|
| Name | Paid |
|---------------------|------------------|
| Teddy | No |
|---------------------|------------------|
| Andy | No |
|---------------------|------------------|
| Andy | Yes |
|---------------------|------------------|
| Sarah | Yes |
|---------------------|------------------|
| Michael | No |
|---------------------|------------------|
| Michael | Yes |
|---------------------|------------------|
我如何获得表中没有出现“是”的名称?
在这个例子中,结果应该是:Teddy。
谢谢 !
解决方案
我将not exists
与相关子查询一起使用:
select t.name, t.paid
from mytable t
where not exists (
select 1 from mytable t1 where t1.name = t.name and t1.paid = 'Yes'
)
对于此查询的性能,您需要在(name, paid)
.
推荐阅读
- c++ - 使用 FT_SetBitMode 时的 SegFault
- apache - 根据IP重定向不同的页面,连接太多
- unity3d - 子弹的速度在不同的设备上是不同的 - Unity Mirror
- javascript - localstorage 中的错误未定义,nextjs 中未定义窗口
- javascript - 为整个页面添加无光标 onclick 即使是带有光标样式的按钮(无 jQuery)
- powershell - PS:检查安装,如果不存在则继续
- android - 使用 Appium、wd 和 React Native 滚动到一个元素
- docker - Docker Compose:yaml:第 9 行:未找到预期的标记 URI
- azure-synapse - display(df.limit(10)) 在突触笔记本中并不总是有效
- pandas - 在所有行上按索引级别重复 Pandas 分组?