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
答案 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子句。