SQL - 选择条件为true的位置,但如果有另一行违反条件则删除

时间:2016-04-17 09:08:16

标签: mysql sql

我在互联网上搜索了几个小时,但我发现什么都没有帮助我。这是我的问题...

我的表

Dim something1001this, something1002this, something1003this etc...
Dim ident As Integer = 1002
    Dim name = ... ?

SQL

/ id / number / idobject /
/ 1  /   50   /    2     /
/ 2  /   60   /    2     /
/ 3  /   70   /    2     /
/ 4  /   80   /    1     /
/ 5  /   10   /    2     /
/ 6  /   20   /    1     /
/ 7  /   90   /    3     /

我想要的结果

SELECT * 
FROM table 
WHERE number > 50 

我只希望idobjects至少有1个idobject为true(> = 50)且没有idobject false

2 个答案:

答案 0 :(得分:3)

如果我得到它,你希望idojects至少有1个idobject为true(> = 50)并且没有idobject false

SELECT MAX(id) as id ,MAX(number) as number,idobject 
FROM t
GROUP BY idobject
HAVING SUM(number <50)=0
AND SUM(number >=50)>0

修改

如果你有超过1个idobject为true,你可以用GROUP_CONCAT

替换MAX

答案 1 :(得分:2)

您可以使用NOT IN子句。

select idobject from table where idobject not in(select idobject from table where number<50);