我试图从我的数据库中选择所有访问过我网站的 ips,从这个月开始,至少相隔一天不止一次,但我的 sql 查询显示错误。我做错了什么?
SELECT ip,COUNT(ip) AS matches
FROM ipAll
WHERE DATE LIKE '%-12-%'
HAVING matches > '1'
GROUP BY ip
错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY ip
最佳答案
HAVING
在 GROUP BY
之后:
SELECT ip, COUNT(ip) AS matches
FROM ipAll
WHERE DATE LIKE '%-12-%'
GROUP BY ip
HAVING matches > 1;
但是,您应该更像这样编写查询:
SELECT ip, COUNT(ip) AS matches
FROM ipAll
WHERE MONTH(DATE) = 12
GROUP BY ip
HAVING matches > 1;
不要在日期上使用 LIKE
,因为日期会使用本地国际化设置(隐式地)转换为字符串。这些可能会改变并破坏代码。另外,不要在需要数字的地方使用字符串常量。
关于mysql - 如何将 GROUP BY 与 HAVING 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34193515/