別の列の2つの条件を使用して列の別個の要素を抽出する必要があります。たとえば、SQL:1つの列で2つの条件を使用して選択します。
c1 | c2
---------
u | a
v | b
w | c
x | a
x | b
x | c
y | a
y | c
c2に 'a'は含まれていても 'b'ではなく、c1のエントリが必要です。返される名前は 'u'と 'y'でなければなりません。
ご協力いただきありがとうございます。
別の列の2つの条件を使用して列の別個の要素を抽出する必要があります。たとえば、SQL:1つの列で2つの条件を使用して選択します。
c1 | c2
---------
u | a
v | b
w | c
x | a
x | b
x | c
y | a
y | c
c2に 'a'は含まれていても 'b'ではなく、c1のエントリが必要です。返される名前は 'u'と 'y'でなければなりません。
ご協力いただきありがとうございます。
おそらく、これを行うには、概念的に最も簡単な方法は、c1
列に集約するだろうとちょうどa
が存在し、b
が存在しないことを主張:
SELECT c1
FROM yourTable
GROUP BY c1
HAVING
SUM(CASE WHEN c2 = 'a' THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN c2 = 'b' THEN 1 ELSE 0 END) = 0
ありがとうございました。それを別の機能にマップするためにケースを使用すると、決して私には到着しませんでした。 –
SELECT DISTINCT t.c1
FROM table as t
WHERE
t.c2 LIKE '%a%'
AND NOT t.c2 LIKE '%b%'
これは、SQLものではありません優れているので、ちょっと大変です。この素朴な実装はかなりバニラであり、ほとんどの方言の下でほとんど変更を加える必要はありません。
ロッキングを防止するために、DB2では内部クエリに "with ur"を追加する必要があります。
select c1 from yourtable
where c2 = 'a'
and c1 not in (
select c1 from yourtable where c2 = 'b'
)
まだ試しましたか?スタックオーバーフローは無料の宿題サービスではありません。 –
私は「テーブルからどこでもc2 = 'a'とc2!= 'b'」を選択して交差を試み、いくつかの方法を試しました。それはうまくいきませんでした... –
これは宿題の匂いに同意しますが、私はちょうど私が答えを提出しただけで興味をそそられていました。 –