我希望避免 Select 有一个空子元素的情况,但只 Select 已经存在亲子关系的情况.因此,在本例中,A-D将保留,但带有A的空行应该被删除.因为C在任何一行中都没有任何子元素,所以它将保留.

输入:

parent     child
A          D
A
A
B          E
B          F
C

期望输出:

parent     child
A          D
B          E
B          F
C

我试过的:

SELECT parent, child
FROM my_table
WHERE child NOT NULL
EXCEPT 
SELECT parent, child
FROM my_table
-- condition to check existing relationships if they exist

推荐答案

也许可以使用下面这样的查询.这将使用exists关键字判断是否存在任何其他非空子级

SELECT parent, child
FROM my_table t
WHERE child is NOT NULL
OR NOT EXISTS 
(
SELECT 1 FROM my_table p Where p.parent=t.parent and p.child is Not null
)

Sql相关问答推荐

如何在PostgreSQL中同时为id s列表执行多个update语句?'

我如何计算字母a出现的字符串的次数?

用于匹配红旗和绿旗的SQL查询

当交叉联接3个或更多表时,实体框架中是否会传输冗余的行数据并占用数据库带宽?

更新PostgreSQL 15中的JSON值

SQL:计算与另一列中给定值互斥的匹配项

带上最后日期(结果)

如何找到一个组合的两个列,这是不是在其他表在ORACLE SQL?

SQL数据库规范化与数据插入

SQL:使用年/月/日分区查询某个时间段的数据

不存在记录的国外关键点

连续天跟踪购买情况(将标记返回到另一列?)

将时间戳四舍五入到最近 10 分钟的查询

使用多个数据库调用重载 CQRS 模式

如何从postgresql中的项目映射(关联数组)设置值?

如何使用 join 和 where 子句从另一表中仅删除一个表中的值

使用SQLAlchemy和Postgres数据库创建新行时,为什么我的创建日期比更新日期晚?

如何通过CROSS APPLY获取多级嵌套JSON属性的值?

批量更改WooCommerce中所有产品的税收状态

从多个连接返回 1 行到同一个表 - SQL Server