我正在尝试创建一个复杂的(对我来说)MySQL查询来从数据库中获取一些数据。 我想要混合3列以获取数据。
timestamp
专栏url
专栏hash
专栏我的最终目标是回答这些类型的问题:
到目前为止我已经这样做了,但我不知道如何获得每个哈希的总数
SELECT DISTINCT hash
FROM behaviour
WHERE DATE( TIMESTAMP ) BETWEEN
SUBDATE( CURDATE( ) , 2 ) AND CURDATE( )
AND url = '/used-results'
和' url'发现此哈希值超过2次
如何编辑查询以添加最后一个条件?
答案 0 :(得分:1)
如果你想计算页数,你将需要聚合函数,在某个地方。所以:
SELECT hash
FROM behaviour
WHERE DATE( TIMESTAMP ) BETWEEN SUBDATE( CURDATE( ) , 2 ) AND CURDATE( ) AND
url = '/used-results'
GROUP BY hash
HAVING COUNT(*) > 2;
通常,像这样的表会非常大,可能会在(url, TimeStamp)
上有一个索引。因此,以下版本更好地利用了hte索引:
SELECT hash
FROM behaviour
WHERE url = '/used-results' AND
TIMESTAMP >= DATE_SUB(CURDATE( ), INTERVAL 2 DAY ) AND
TIMESTAMP < DATE_ADD(CURDATE( ), INTERVAL 1 DAY)
GROUP BY hash
HAVING COUNT(*) > 2;