0

現在、データベースに 2 つの列があり、列 2 に特定の値を含まない列 1 のすべての値を返そうとしています。

例: 列 1 には 9 桁のランダムな値があり、時々繰り返されます。列 2 には 4 つの異なるオプションがあります。P1、P2、P3、P4。

列 2 に P4 の値がない列 1 の値のみを表示しようとしています。P4 がない場合は、すべてを表示したいのですが、列 1 の値が関連付けられると、 P4 では、列 1 の値を表示したくありません。このプロセスは、列 1 に表示される値だけが P4 列 2 の値に関連付けられていない値になるまで、列 1 のすべての値に対して続行されます。

4

3 に答える 3

2

このようなことを意味しますか?

SELECT *
FROM YOUR_TABLE
WHERE COLUMN1 NOT IN (
    SELECT COLUMN1
    FROM YOUR_TABLE
    WHERE COLUMN2 = 'P4'
)
于 2013-02-28T02:32:02.017 に答える
0

これだけじゃないかな

SELECT column1 FROM <table> WHERE column2 != 'P4'
于 2013-02-28T02:34:48.157 に答える
0

これは、セット内のセット (つまり、列 1 の値内の列 2 のセット) を見ているクエリの例です。これらのクエリにはgroup byandを使用することを好みます。having

select column1
from t
group by column1
having sum(case when column2 = 'P4' then 1 else 0 end) = 0

すべての値を取得するには、元のテーブルに結合します。

select t.*
from t join
     (select column1
      from t
      group by column1
      having sum(case when column2 = 'P4' then 1 else 0 end) = 0
     ) c1
     on t.column1 = c1.column1
于 2013-02-28T02:35:14.620 に答える