针对MySQL的列中多次出现的计数器

时间:2015-01-17 11:32:03

标签: mysql sql

In the MySQL solution here。我试图为列的DevelopmentName选择Distinct,但也想只拉一个名称出现多次的计数。我收到语法错误并在列名和Count指令之间尝试了逗号?

SELECT DevelopmentName count(*) as Counter
  FROM sunshinemls_property_res WHERE Counter > 2
   AND City = 'Bonita Springs' OR City = 'Estero'
    OR City = 'Naples' OR City = 'Marco Island'
 ORDER BY DevelopmentName ASC

2 个答案:

答案 0 :(得分:3)

您的查询中存在一些小的逻辑错误:

  • select
  • 中缺少逗号
  • where中的逻辑不正确(如果where有效,那就不行了,因为你需要parens来表示你想要的逻辑)。
  • > 2,如果您需要> 1
  • 缺少group by条款

但最大的问题是在counter子句中使用where。该逻辑应该放在having

SELECT DevelopmentName, count(*) as Counter
FROM sunshinemls_property_res
WHERE City IN ('Bonita Springs', 'Estero', 'Naples', 'Marco Island')
GROUP BY DevelopmentName
HAVING count(*) > 1
ORDER BY DevelopmentName ASC;

在MySQL中,您可以说HAVING Counter > 1。但是,并非所有数据库都支持该语法,因此我通常只重复聚合表达式。

答案 1 :(得分:-1)

一定会有效

select Distinct(DevelopmentName),count(*) as Counter from sunshinemls_property_res where City in ('Bonita Springs', 'Estero','Naples','Marco Island') Group by DevelopmentName Having Counter >= 2;

您不能在where子句中使用Counter别名,因为mysql会尝试搜索该表的列名。因此别名不允许在where子句中使用。所以为了避免你可以使用group by和having子句。