0

我准备好了更详细的描述,但我想我会先尝试简单的描述。

X    Y
7    F
7    F
7    E
7    F
8    F
8    F

我想根据确定对于 X 的值 (x) 是否存在对应表中所有 x 的 Y 中的 F 值来做其他事情。这意味着 7 不会削减它,而 8 会。如何使用子查询对此进行编码?我使用全部吗?我写了一个查询,但只要有一个匹配项而不是全部匹配项,它就会返回 true。

4

3 回答 3

1

尝试以下查询

select distinct X from temp
except
select X from temp where Y!='F' -- x,y columns, temp -> table

--Query select all distinct X which has all Y as F

以下是相同的替代查询

select distinct X from temp where not exists (select X from temp where Y='E')
于 2013-09-29T00:53:24.977 回答
1

Select * from mytable where X not in ( Select X from mytable Where Y <> 'F' )

于 2013-09-29T01:07:10.533 回答
1

在大多数主要的 RDBMS 中,您无需像这样的子查询就可以做到这一点

SELECT x
  FROM table1
 GROUP BY x
HAVING COUNT(*) = SUM(CASE WHEN Y = 'F' THEN 1 ELSE 0 END)

或者

SELECT x
  FROM table1
 GROUP BY x
HAVING MAX(CASE WHEN Y <> 'F' THEN 1 ELSE 0 END) = 0

输出:

| X |
|---|
| 8 |

这是SQLFiddle演示 (MySQL)
这是SQLFiddle演示 (SQL Server)
这是SQLFiddle演示 (Oracle)

于 2013-09-29T02:20:03.790 回答