You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle数据库如何查询同列超集并仅返回超集行

在Oracle中筛选同一列的超集行(或无对应子集的行)

样本数据表

IDValue
1abc
2abcd
3abcde
4xyz
5lmn
6lmno

需求说明

需要筛选出两类行:

  • 是其他行值的超集(即没有其他行的值包含它,它是同一组中的最大包含项)
  • 没有任何对应子集的行(即没有其他行的值是它的子集)

最终期望返回ID为3、4、6的行。

解决方案SQL

SELECT t1.ID, t1.Value
FROM your_table t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.ID != t1.ID
      AND t2.Value LIKE '%' || t1.Value || '%'
);

逻辑解释

  • 核心通过NOT EXISTS子查询判断当前行是否被其他行的值包含:
    1. t2.ID != t1.ID排除行自身的对比
    2. t2.Value LIKE '%' || t1.Value || '%'检查是否存在其他行的值包含当前行的值
  • 如果不存在这样的t2行,说明当前行要么是某组中的最大超集,要么没有任何子集,符合需求。

执行结果

IDValue
3abcde
4xyz
6lmno

内容的提问来源于stack exchange,提问作者Manjunath N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:55:09