SQL查询:求总CITY数与去重CITY数差值,MINUS用法报错求解
错误原因分析
- MINUS函数误用:MINUS是集合运算,用于返回第一个查询结果中存在、但第二个查询结果中不存在的记录行,而你需要的是两个数值的算术减法,不是集合差集,所以用MINUS完全不符合需求。
- 统计不同城市的语法错误:你写的
SELECT DISTINCT COUNT(CITY)是错误的,正确统计不同城市数量的写法是COUNT(DISTINCT CITY)——DISTINCT应该放在COUNT内部修饰统计的字段,而非修饰整个COUNT的结果(COUNT本身返回单一数值,加DISTINCT没有意义)。
正确查询语句
直接在一个SELECT中计算总数与去重后数量的差值:
SELECT COUNT(CITY) - COUNT(DISTINCT CITY) AS difference FROM STATION;
这个语句会先计算表中CITY列的总条目数,再计算不同CITY的数量,最后返回两者的差值,符合你预期得到13的结果要求。
内容的提问来源于stack exchange,提问作者tocodeistocreate
相关产品推荐
相关产品推荐

