帮我理解这一点:在问题3a(“查找每个区域中最大的国家”)的sqlzoo教程中,为什么将'AND population> 0'附加到嵌套SELECT语句使其正确?SQL:冗余WHERE子句指定列是> 0?
5
A
回答
2
的原因是因为:
AND population > 0
...被过滤掉空行的区域 “欧洲”,名 “梵”,其复杂的:
WHERE population >= ALL (SELECT population
FROM ...)
。因为NULL不是一个值,所以俄罗斯将不会被正确排名。 ALL运算符要求您所比较的值大于或等于ALL从子查询返回的值,当存在NULL时永远不会发生这种情况。
我的查询会一直之一:
SELECT region, name, population
FROM bbc x
WHERE population = (SELECT MAX(population)
FROM bbc y
WHERE y.region = x.region)
...或者,使用JOIN:
SELECT x.region, x.name, x.population
FROM bbc x
JOIN (SELECT y.region,
MAX(y.population) AS max_pop
FROM bbc y
GROUP BY y.region) z ON z.region = x.region
AND z.max_pop = x.population
0
相关问题
- 1. 返回所有的行与冗余where子句
- 2. Spark SQL:在WHERE子句中指定从UDF生成的列名
- 3. “WHERE id <> 0”子句在SQL中意味着什么?
- 4. SQL Server where子句顺序计数> 0
- 5. SQL Where子句
- 6. SQL 2 where子句
- 7. where子句中的SQL Case语句指定条件?
- 8. 冗余列
- 9. SQL Concat Where子句
- 10. SQL冗余结果
- 11. PostgreSQL的指数多列WHERE子句
- 12. 使用GROUP BY子句时,SELECT DISTINCT是否总是冗余?
- 13. 从冗余列表
- 14. SQL Where子句通过列表的列
- 15. 列表<>。AddRange - where子句
- 16. SQL Server WHERE子句
- 17. SQL - where子句NULL
- 18. Where子句中SQL
- 19. SQL:在 'where子句'
- 20. T SQL WHERE子句
- 21. SQL语句WHERE子句
- 22. WHERE子句中的SQL Server结果列
- 23. 优化冗余else语句
- 24. SQL Server WHERE子句使用临时列
- 25. SQL过程where子句列出记录
- 26. SQL where子句子查询
- 27. SQL冗余NOT NULL约束
- 28. 动态列的DB2 SQL WHERE子句
- 29. SQL WHERE子句同一列多次?
- 30. WHERE子句中的SQL加密列
OH所以欧洲是唯一一个空白人口值的地区。我知道了。 – Hamster 2010-09-21 22:10:08
@Hamster:是的,否则你会看到其他地区也退出。 ALL运算符要求您所比较的值大于或等于从子查询返回的所有值,当存在NULL时永远不会发生这种情况。 – 2010-09-21 22:11:13
也有NOT NULL选项吗?这可能会更有意义,也许。 – Hamster 2010-09-21 22:14:46