sql筛选帮助:col\u name+1和col\u name-1做什么?

fzwojiic  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(388)

我有一个问题:哪个国家的人口比加拿大多而比波兰少?显示姓名和人口。
我写的查询很好:

SELECT name, population FROM world
WHERE population > 
(SELECT population FROM world
WHERE name = 'Canada')
AND
population < 
(SELECT population FROM world
WHERE name = 'Poland')

但是,答案键显示了更为优雅的东西:

SELECT name,population FROM world
WHERE population BETWEEN
(SELECT population+1 FROM world WHERE name='Canada')
AND
(SELECT population-1 FROM world WHERE name='Poland')

问:人口+1和人口-1实际上是做什么的?我检索了population、population+1和population-1,它们所做的只是从得到的列值中加一减一。为什么这是我要解决的问题的必要条件?为什么我不能我只是做:

SELECT name,population FROM world
WHERE population BETWEEN
(SELECT population FROM world WHERE name='Canada')
AND
(SELECT population FROM world WHERE name='Poland')

运行上面的查询返回一个不正确的结果,尽管它(在我看来)相当于我原来的查询,它返回了正确的结果!
任何帮助我的头围绕这是非常感谢!
注意:使用sqlzoo.net平台运行我的查询。

cedebl8k

cedebl8k1#

你的版本更好。另一种方法是在总体上加1或减1。为什么?因为 between 包括结束点和问题显然不想结束点。
因此, > 以及 < 是个比哄骗好得多的选择 between 做不该做的事。

相关问题