0

以下の行を持つテーブルがあり、複雑なクエリに参加する必要があります

COL_1       COL_2     COL_3     COL_4  COL_5
-----       -----     -----     -----   ----
1            A         X         Y
1            *         *         *
.............
.......

COL_2、COL_3、および COL_4 には特定の値を指定できます。または「*」はすべてを意味します。

すべての特定の値を含む行が見つかった場合、1 行だけを選択する必要があります。

COL_2 ='A' and COL_3 = 'X' and COL_4 = 'Y' AND COL_1 = '1'

そのような行が見つからない場合は、以下の条件を持つ行を選択する必要があります。

COL_2 ='*' and COL_3 = '*' and COL_4 = '*' AND COL_1 = '1'

値に「OR」を使用すると、両方の行が取得されます。助けてください。

4

2 に答える 2

0

状況の複雑さに応じて、行の存在を確認できます。

where col2='A' and col3='X' and col4='Y' and col1='1'
or
(
    not exists (select 1 from tbl where col2='A' and col3='X' and col4='Y' and col1='1')
    and col2='*' and col3='*' and col4='*' and col1='1'
)            

これよりも複雑な場合、この手法はすぐに醜くなります。

于 2013-10-23T14:09:04.113 に答える