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

如何从COND表中提取满足特定双条件组合的NAME值

问题需求

现有COND表,结构和数据如下:

ORDERNO    NAME    OUTPUT SIGN
12         HOUSE    O     +
13         CAR      O     -
14         BOOK     I     +
13         HOUSE    I     A

需要找出满足以下要求的NAME:同一个NAME必须同时存在两条记录——一条是OUTPUT='O'且SIGN='+',另一条是OUTPUT='I'且SIGN='A'。按这个规则,示例里只有HOUSE符合条件。

两种可行的SQL写法

写法一:分组统计筛选

先把符合两个条件之一的记录挑出来,再按NAME分组,检查是否同时包含两种记录:

SELECT NAME
FROM COND
WHERE (OUTPUT = 'O' AND SIGN = '+') OR (OUTPUT = 'I' AND SIGN = 'A')
GROUP BY NAME
HAVING COUNT(DISTINCT CONCAT(OUTPUT, SIGN)) = 2;

逻辑很直白:先过滤出目标候选记录,然后看每个NAME是不是刚好有两种不同的目标组合,满足的就是我们要的结果。

写法二:自连接匹配

把表和自己连起来,直接找同一个NAME下分别满足两个条件的记录:

SELECT DISTINCT c1.NAME
FROM COND c1
JOIN COND c2 ON c1.NAME = c2.NAME
WHERE c1.OUTPUT = 'O' AND c1.SIGN = '+'
  AND c2.OUTPUT = 'I' AND c2.SIGN = 'A';

这个思路更直接:找一条O+的记录,再匹配同NAME的IA记录,能匹配上的NAME就是符合要求的,用DISTINCT避免重复输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 01:27:11