0

このクエリの実行方法に頭を悩ませようとしています-クライアントレコードのリストを返したいのですが、特定の値のみがあり、他の値がない場合はクライアントを除外する必要があります。

例えば

c#    value
1     X
1     Y
2     X
3     Y

クライアント 1 と 3 には X 以外の値があったため、すべてのレコードが必要です。クライアント 2 は必要ありません。そのクライアントには X しかなかったからです。

たとえば、この場合は次のように返されます。

1  X
1  Y
3  Y

もちろん、他のクライアント ID と値を持つ他の多くのレコードを持つこともできますが、単一の "X" 値を持ち、他の値を持たないものだけを除外したいと考えています。

おそらくサブクエリを使用していますか?

4

2 に答える 2

0

これを試して:

SELECT client, value FROM myTable where `client` in 
  (select distinct(client) from myTable where value !='X');

戻り値:

Client   Value
1        X
1        Y
3        Y
于 2013-10-08T00:33:51.157 に答える
0

このようなもの

SELECT ABB2.* 
FROM 
mytable AS ABB2
    JOIN
        (SELECT c 
        FROM mytable 
        WHERE value <> "X"
        GROUP BY c) AS ABB1 ON ABB1.c = ABB2.c
GROUP BY ABB2.c, ABB2.value

サブクエリの結果を識別するためにWHERE句を使用するよりも高速です(マイクの回答のように)

于 2013-10-08T00:44:01.427 に答える