mysql - 用于查找趋势的 SQL 查询

标签 mysql sql inner-join

我有两个表 - 选票和污点。 投票有名称、时间和喜欢/不喜欢参数作为表格列。 Blotes 只是人们投票选出的一些标签。他们有一个分数(喜欢减去不喜欢)和 number_of_votes 作为字段。

我整理了一个查询来查找趋势 Blob -

SELECT name, number_of_votes, score FROM `vote`
INNER JOIN `blote` ON vote.name=blote.name
WHERE UNIX_TIMESTAMP(now()) - `time` < 60*60*24*7
GROUP BY vote.name
ORDER BY blote.number_of_votes DESC
LIMIT 25

这显然是错误的。它找到那些在上周获得更多选票且至少获得一票的 Blotes。我想要的是找到那些在上周获得更多选票的人。希望这是有道理的。谢谢。

最佳答案

有时候写一个问题会有很大帮助。我知道我需要使用 count(),在提交问题后不久,我就看到了如何做。

这里是:

SELECT count(time), blote.name, number_of_votes, score  FROM `vote`
INNER JOIN `blote` ON vote.name=blote.name
WHERE UNIX_TIMESTAMP(now()) - `time` < 60*60*24*7
GROUP BY vote.name
ORDER BY count(time) DESC
LIMIT 25

有什么方法可以改进这个查询吗?

关于mysql - 用于查找趋势的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5505452/

相关文章:

mysql - 在 MySQL 表之间移动行

php - 尝试使用 PHP 检查用户名是否已存在于 MySQL 数据库中

sql - 甲骨文。无法理解 FOR 如何与子查询 SELECT INTO 一起使用

mysql - mysql内连接问题

mysql - 左加入 group_concat 太慢

php - "Undefined variable"当php函数从mysql数据值中选择时

mysql - 当关系是非标识时从多个表中删除

mysql - 将 SELECT 语句转换为 MySQL 中的 UPDATE 语句

MySQL 多对多 JOIN 返回重复项

mysql - 我正在尝试连接 2 个表并希望获取该行(如果存在),但它向我显示此错误 SQLSTATE[42000] : Syntax error or access violation: 1064