0

より詳細な説明が用意されていますが、最初は簡単なものを試してみようと思いました。

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

X の値 (x) に対して、対応するテーブルのすべての x に対して Y に F の値があるかどうかを判断することに基づいて、何か他のことをしたいと考えています。これは、7 ではうまくいきませんが、8 ではうまくいくことを意味します。サブクエリを使用してこれをコーディングするにはどうすればよいですか? ALL を使用しますか? クエリを作成しましたが、すべてではなく 1 つの一致がある場合は常に 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 に答える