首页 > 解决方案 > Postgresql - 如何从没有出现特定数据的同一个表中获取记录

问题描述

在 PostgreSQL 中,如果我有这种记录:

|---------------------|------------------|
|      Name           |     Paid         |
|---------------------|------------------|
|        Teddy        |        No        |
|---------------------|------------------|
|        Andy         |        No        |
|---------------------|------------------|
|        Andy         |        Yes       |
|---------------------|------------------|
|        Sarah        |        Yes       |
|---------------------|------------------|
|        Michael      |        No        |
|---------------------|------------------|
|        Michael      |        Yes       |
|---------------------|------------------|

我如何获得表中没有出现“是”的名称?

在这个例子中,结果应该是:Teddy。

谢谢 !

标签: sqlpostgresql

解决方案


我将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).


推荐阅读