如何SQL查询与条件不同
简单的数据库:如何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
假设表格的名称是'tab'。然后,您可以尝试:
select distinct street from tab where street not in (select street from tab where age>3);
我创建了一个SQL小提琴在这里你可以查看结果: http://sqlfiddle.com/#!9/2c513d/2
鲜明的街头户名称的记录,其中没有一个是超过3:
SELECT street
FROM table
GROUP BY street
HAVING COUNT(1) <= 3
@downvoter谨慎评论为什么downvote?这是第一个答案,准确地给了用户他询问 –
使用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)
SELECT DISTINCT street
FROM table
WHERE NOT(age>3)
如果有10个记录带有“1主st”,但年龄从3到50不等,他会问“1主st”吗?我想不是。 – JasonGenX
是的,它会为年龄为3岁的家庭在“1主要”产生一个记录。 –
必须与预期的结果包括:'age'场? –
没有。我只是为了说明而显示它 – JasonGenX
您正在使用哪个[DBMS](https://en.wikipedia.org/wiki/DBMS)产品? Postgres的?甲骨文? “_SQL_”只是一种查询语言,而不是特定数据库产品的名称。 –