2017-10-12 64 views
0

简单的数据库:如何SQL查询与条件不同

street  | age 
1st st  | 2 
2nd st  | 3 
3rd st  | 4 
3rd st  | 2 

我想建立一个查询,将返回DISTINCT街道名称,但只适用于那些家庭中,没有一个是超过3

,这样的结果将是:

street  | age 
    1st st  | 2 
    2nd st  | 3 

我该怎么办呢?我知道DISTINCT,但现在如何实现条件为所有符合DISTINCT

+0

必须与预期的结果包括:'age'场? –

+0

没有。我只是为了说明而显示它 – JasonGenX

+0

您正在使用哪个[DBMS](https://en.wikipedia.org/wiki/DBMS)产品? Postgres的?甲骨文? “_SQL_”只是一种查询语言,而不是特定数据库产品的名称。 –

回答

1

假设表格的名称是'tab'。然后,您可以尝试:

select distinct street from tab where street not in (select street from tab where age>3); 

我创建了一个SQL小提琴在这里你可以查看结果: http://sqlfiddle.com/#!9/2c513d/2

0

鲜明的街头户名称的记录,其中没有一个是超过3:

SELECT street 
FROM table 
GROUP BY street 
HAVING COUNT(1) <= 3 
+0

@downvoter谨慎评论为什么downvote?这是第一个答案,准确地给了用户他询问 –

0

使用GROUP BY

Select Street 
from yourtable 
group by street 
Having sum(age)<=3 

另一种方式可以使用NOT EXISTS

SELECT * 
FROM yourtable a 
WHERE NOT EXISTS 
    (SELECT street 
    FROM yourtable b 
    WHERE age > 3 
     AND a.street = b.street) 
0
SELECT DISTINCT street 
FROM table 
WHERE NOT(age>3) 
+0

如果有10个记录带有“1主st”,但年龄从3到50不等,他会问“1主st”吗?我想不是。 – JasonGenX

+0

是的,它会为年龄为3岁的家庭在“1主要”产生一个记录。 –