[编辑:]我添加了值(1052,10,3,1290839091,1)以更好地解决问题,并且必须将“item_id”添加到提取最新投票的子查询中.

好极了!最后一个stackoverflow问题,我实际上可以回答!我已经浏览了一个星期寻找短暂的东西;甜蜜的我的胡同.感谢有趣的SQL问题!

首先,你需要提取最新的选票. (voter_id,item_id,vote_date)的组合更适合这种工作方式!

SELECT

voter_id, item_id, MAX(vote_date) AS vote_date

FROM

votes

GROUP BY

voter_id, item_id

结果:

+----------+---------+------------+

| voter_id | item_id | vote_date |

+----------+---------+------------+

| 3 | 9 | 1275021495 |

| 3 | 10 | 1290839091 |

| 27 | 9 | 1273770151 |

| 45 | 9 | 1274896188 |

| 181 | 9 | 1290839090 |

+----------+---------+------------+

然后你需要加入原始表格来反对这些结果.子选择将完成这项工作.请注意上面的查询是如何复制&粘贴到下面的连接中,但现在它的名称为“tmp”:

SELECT

v.*

FROM (

SELECT

voter_id, item_id, MAX(vote_date) AS vote_date

FROM

votes

GROUP BY

voter_id, item_id

) tmp

INNER JOIN

votes v ON ( v.vote_date = tmp.vote_date

AND v.voter_id = tmp.voter_id

AND v.item_id = tmp.item_id

)

结果:

+---------+---------+----------+------------+------+

| vote_id | item_id | voter_id | vote_date | vote |

+---------+---------+----------+------------+------+

| 60 | 9 | 27 | 1273770151 | 1 |

| 153 | 9 | 45 | 1274896188 | 1 |

| 164 | 9 | 3 | 1275021495 | 2 |

| 1051 | 9 | 181 | 1290839090 | 1 |

| 1052 | 10 | 3 | 1290839091 | 1 |

+---------+---------+----------+------------+------+

我相信你知道从这里做什么….哦,我不能帮助自己,这太可爱了:

SELECT

v.item_id, SUM(2 - v.vote) AS likes, SUM(v.vote - 1) AS dislikes

FROM (

SELECT

voter_id, item_id, MAX(vote_date) AS vote_date

FROM

votes

GROUP BY

voter_id, item_id

) tmp

INNER JOIN

votes v ON ( v.vote_date = tmp.vote_date

AND v.voter_id = tmp.voter_id

AND v.item_id = tmp.item_id

)

GROUP BY

v.item_id

结果:

+---------+-------+----------+

| item_id | likes | dislikes |

+---------+-------+----------+

| 9 | 3 | 1 |

| 10 | 1 | 0 |

+---------+-------+----------+

mysql 投票总排行_MySQL投票表,查找每个用户对条目的最新投票,并根据值进行计数...相关推荐

  1. 如何增加mysql主键约束_mysql修改表时怎么添加主键约束?

    mysql中可以通过"ALTER TABLE 表名 ADD PRIMARY KEY(字段名);"语句在修改数据表时添加主键约束:当在修改表时要设置表中某个字段的主键约束时,要确保设 ...

  2. mysql循环遍历获取_MySql多表循环遍历更新

    先给大家解释解释发表这篇博文的主要思想是: MySql数据库中存在大量的表结构,而且这些表都存在一个共同点,就是表中都有相同字段,比如id,name,city,adress,lat,lng.表中字段i ...

  3. mysql查询表的索引_MySQL查看表索引

    mysql> show index from tblname; mysql> show keys from tblname; · Table 表的名称. · Non_unique 如果索引 ...

  4. mysql 分页 有序保证_MySql大表分页(附独门秘技)

    问题背景 MySql(InnoDB)中的订单表需要按时间顺序分页查询,且主键不是时间维度递增,订单表在百万以上规模,此时如何高性能地实现该需求? 注:本文并非主要讲解如何建立索引,以下的分析均建立在有 ...

  5. mysql 数据库 限制大小_MySQL数据库表各种大小限制小结

    本文所有条目总结均来自mysql5.6的官网英文文档: 1. MySQL表的列数限制 1.1 MySQL硬性限制每个表最大4096个列 1.2 InnoDB存储引擎的约束: 每个表最大1017个列; ...

  6. mysql查询低效语句_MySQL数据库中查找执行从命慢的SQL语句

    MySQL数据库中查找执行从命慢的SQL语句 (2011-09-15 08:21:35) 标签: 杂谈 去历:赛迪网 做者:Alizze 启动Mysql时减参数--log-slow-queries去挤 ...

  7. mysql数据库实验查询_MySQL数据库表数据的查询操作实验

    实验3.MySQL数据库表数据的查询操作实验(1) 一.实验目的 掌握SELECT 语句的基本语法格式. 掌握SELECT 语句的执行方法. 掌握SELECT 语句的 GROUP BY 和 ORDER ...

  8. mysql数据库崩溃恢复_MySQL数据库表维护和崩溃恢复

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 你可以使用myisamchk实用程序来获得有关你的数据库表的信息或检查.修复.优化他们.下列小节描述如何调用myisamchk(包括它的选项的描述),如何 ...

  9. mysql unicode转汉字_Mysql数据库表引擎与字符集

    Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理 ...

最新文章

  1. Maven项目依赖管理工具
  2. read configuration - shared object - read_comp_configuration_raw
  3. php使用redis存储
  4. 如何处理word中字体和公式不在同一水平线上
  5. 平滑空间滤波器(附C语言实现代码)
  6. 时间序列经济python_(13)Python初入坑之时间序列基础内容
  7. 月薪没过3W,肯定是没关注这几位大佬的公众号
  8. MAX6299MTT在CPLD上的应用
  9. 走近棒球运动·堪萨斯城皇家队·MLB棒球创造营
  10. 3511. 倒水问题
  11. contour()函数的理解
  12. 微信小程序-视频弹幕的项目
  13. 【数据分析与挖掘】基于Apriori算法的中医证型的关联规则挖掘(有数据集和代码)
  14. 视觉SLAM(二):相机与图像
  15. 进程创建-终止-等待-替换
  16. 全国计算机考试如何查准考证号
  17. 卡普的21个NP完全问题-问题描述
  18. java-常量和变量
  19. nmon结果分析工具_使用nmon analyzer 分析指标
  20. 怎么把图片转换成jpg格式?

热门文章

  1. 带偏移量的AES加密工具
  2. mysql解决select * from 表名 (where + 约束条件为空)
  3. Python面向对象(类的成员之属性)
  4. web移动端开发经验总结
  5. 20155204 2016-2017-2《Java程序设计》课程总结
  6. mysql的limit、order by和group by的用法
  7. 对一句正则表达式的理解
  8. 第四讲 构建安全的Microsoft ASP.NET 应用的最佳实践和技术
  9. 4.1.3数据报与虚电路
  10. 计算机网络(十七)-局域网