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 子句识别子查询结果更快(如 Mike 的回答)

于 2013-10-08T00:44:01.427 回答