我正在尝试创建一个 mysql 查询来查看存储搜索查询的表。该查询试图获取符合以下条件的所有行:
>=
到一个日期此查询不起作用,但应概述我正在尝试执行的操作:
SELECT * FROM `analytics` WHERE `date` >= '2021-01-01' GROUP BY `query` HAVING COUNT(*) >= 3 AND GROUP BY `user` HAVING COUNT(*) >= 2 ORDER BY id DESC;
示例数据
id | 用户 | 查询 | 日期 |
---|---|---|---|
1 | 5 | 什么是狗 | 2021-01-01 |
2 | 5 | 什么是狗 | 2021-01-01 |
3 | 6 | 什么是狗 | 2021-01-01 |
4 | 7 | 什么是狗 | 2021-01-01 |
5 | 7 | 什么是兄弟 | 2021-01-01 |
示例 SQL
SELECT * FROM analytics WHERE date >= '2021-01-01' GROUP BY query HAVING COUNT(*) >= 3 AND GROUP BY user HAVING COUNT(*) >= 2 ORDER BY id DESC;
使用上面查询中设置的值,应返回查询“What is a dogs”的单行,所有其他列并不重要。
我知道您可以将单独的列用逗号分隔为 GROUP BY,但我似乎无法弄清楚如何为每列设置不同的值。
P粉8183174102024-02-27 00:58:40
您可以在同一个 HAVING
子句中设置这两个条件:
SELECT `query` FROM `analytics` WHERE `date` >= '2021-01-01' GROUP BY `query` HAVING COUNT(*) >= 3 AND COUNT(DISTINCT `user`) >= 2;