SQL 语句易错点

1.NULL 值不要与其他具体值进行比较,NULL也不能与NULL进行比较

比如: 哪些国家的GDP 比在欧洲任何一个国家的GDP都高

错误示范"

SELECT name FROM bbc
 WHERE gdp > ALL (SELECT gdp FROM bbc WHERE region = 'Europe' AND gdp<>NULL);

用 gpd <> NULL 这样是无法排除 gdp 是 NULL的情况

正确做法:

SELECT name FROM bbc
 WHERE gdp > ALL (SELECT gdp FROM bbc WHERE region = 'Europe' AND gdp>0);

2.WHERE 和 HAVING 分不清楚

WHERE 过滤行,而HAVING 过滤分组

给出两个例子分别HAVING 和WHERE

表格格式:

 world(name, continent, area, population, gdp)

例1:  每个大陆有多少个 人口在200000000的国家.

SELECT continent,count(name)
FROM world
WHERE population > 200000000
GROUP BY continent

例2; 展示总人口在500000000的大陆

SELECT continent,sum(population)
FROM world
GROUP BY continent
HAVING sum(population) >= 500000000;

例子: 我想要知道总和面积大于

BBC表格:

15000000 的区域 和 区域总和面积

 SELECT region, SUM(area)
   FROM bbc 
  WHERE SUM(area) > 15000000 
  GROUP BY region

 WHERE 无法根据区域总和来过滤行.

正确做法应该是:

 SELECT region, SUM(area)
   FROM bbc 
  GROUP BY region
  HAVING SUM(area) > 15000000 

猜你喜欢

转载自www.cnblogs.com/--zz/p/9777658.html