0

私のテーブルの一部は次のとおりです。

Key|Value
---------
 A | V1
 B | V2
 C | V3

次のクエリは間違いなく結果を返さないことはわかっていますが、肯定的な結果、つまり「1」を達成するための正しいクエリは何ですか。

つまり、A の値が V1 であり、B の値が V2 であることを確認し、「1」を返すクエリを適用する必要があります。A または B の結果が異なる場合、新しいクエリは何も返さないはずです。

テーブルがキーと値のペアのマップであると想定します。ここでの唯一の違いは、Java マップではなく、Oracle Db のテーブルであることです。では、キーと値の両方のペアを満たす結果を得るにはどうすればよいでしょうか。

select 1 from myTable 
where (key = 'A' and value = 'V1') 
  AND (key = 'B' and value = 'V2');

テーブル自体のデザインを変更する必要がある場合はお知らせください。

4

3 に答える 3

2

これがあなたの望むものだと思います。

select 1 from dual
 where exists(
              select 1
                from mytable
               where key = 'A' and value = 'V1')
   and exists(
              select 1
                from mytable
               where key = 'B' and value = 'V2')
于 2013-08-14T10:03:59.403 に答える
0

特定の条件を満たす行があるかどうかのみを確認したい場合は、次の構成を使用できます

select count(*) from dual
where exists (
               select 1  
               from myTable 
               where (key = 'A' and value = 'V1')                       
              )
 AND exists (
               select 1  
               from myTable 
               where (key = 'B' and value = 'V2')                       
              );
于 2013-08-14T09:50:38.817 に答える