如何在表中查找具有条件“a”但在条件“b”中不存在的值的行?

时间:2013-07-02 11:17:38

标签: mysql sql select

我有一个聚合表,如:

No     Field1   Type
12     -1       FR2 
12     45       FR1 
11     -1       FR2 
11     30       FR2
11     20       FR1

是否可以根据Field1中具有负值的类型选择 Nos 而没有其他具有正值的条目?

是否有可能找到对该选择的否定?

因此输出应为:

No
11

解释

我正在尝试检查那些未通过测试列表并且没有重新获得并通过它们的人。那些从未失败过的人,以及那些重新获得和通过的人,都是结果。

在结果输出中,不返回12,因为它具有FR2的负值,而FR2没有后续的正值。

感谢。

2 个答案:

答案 0 :(得分:2)

SELECT No
FROM
  ( SELECT No, MAX(Field1) AS MaxField1
    FROM tableX
    GROUP BY No, Type
  ) AS tmp
GROUP BY No
HAVING MIN(MaxField1) > 0 ;

SQL-Fiddle

进行测试

答案 1 :(得分:0)

select distinct No from yourtable
group by No,Type
having max(Field1) >0
and min(Field1)<0