作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在做这道题:
哪些国家/地区的 GDP 高于欧洲所有国家/地区? [只给出名称。](某些国家/地区的 gdp 值可能为 NULL)
网站的建议答案是:
SELECT name
FROM world
WHERE GDP >= ALL(SELECT GDP
FROM world
WHERE population>0 AND continent = 'Europe' )
这里使用了 ALL
关键字,需要使用 WHERE population >0
处理空值
我的解决方案是这样的:
SELECT name
FROM world
WHERE GDP >= (SELECT MAX(GDP)
FROM world
WHERE continent = 'Europe')
我使用了 MAX
关键字,在这种情况下我们似乎不需要考虑处理 NULL
值
我的解决方案正确吗?这两种解决方案的权衡是什么?
最佳答案
像MAX
这样的聚合函数会忽略NULL
值,所以条件的意义
... WHERE GDP >= (SELECT MAX(GDP) FROM world WHERE continent = 'Europe')
是:如果 GDP
大于或等于定义了 GDP
的每个欧洲国家/地区的 GDP,则为真。
它相当于这样的条件:
GDP >= ALL(SELECT GDP FROM world WHERE continent = 'Europe' and GDP is not null)
所以这就是您想要实现的目标(我会这样解释练习),那么您的方法是正确的。
关于mysql - MAX 或 ALL in sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43248530/
我是一名优秀的程序员,十分优秀!