mysql 投票总排行_MySQL投票表,查找每个用户对条目的最新投票,并根据值进行计数...
[编辑:]我添加了值(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投票表,查找每个用户对条目的最新投票,并根据值进行计数...相关推荐
- 如何增加mysql主键约束_mysql修改表时怎么添加主键约束?
mysql中可以通过"ALTER TABLE 表名 ADD PRIMARY KEY(字段名);"语句在修改数据表时添加主键约束:当在修改表时要设置表中某个字段的主键约束时,要确保设 ...
- mysql循环遍历获取_MySql多表循环遍历更新
先给大家解释解释发表这篇博文的主要思想是: MySql数据库中存在大量的表结构,而且这些表都存在一个共同点,就是表中都有相同字段,比如id,name,city,adress,lat,lng.表中字段i ...
- mysql查询表的索引_MySQL查看表索引
mysql> show index from tblname; mysql> show keys from tblname; · Table 表的名称. · Non_unique 如果索引 ...
- mysql 分页 有序保证_MySql大表分页(附独门秘技)
问题背景 MySql(InnoDB)中的订单表需要按时间顺序分页查询,且主键不是时间维度递增,订单表在百万以上规模,此时如何高性能地实现该需求? 注:本文并非主要讲解如何建立索引,以下的分析均建立在有 ...
- mysql 数据库 限制大小_MySQL数据库表各种大小限制小结
本文所有条目总结均来自mysql5.6的官网英文文档: 1. MySQL表的列数限制 1.1 MySQL硬性限制每个表最大4096个列 1.2 InnoDB存储引擎的约束: 每个表最大1017个列; ...
- mysql查询低效语句_MySQL数据库中查找执行从命慢的SQL语句
MySQL数据库中查找执行从命慢的SQL语句 (2011-09-15 08:21:35) 标签: 杂谈 去历:赛迪网 做者:Alizze 启动Mysql时减参数--log-slow-queries去挤 ...
- mysql数据库实验查询_MySQL数据库表数据的查询操作实验
实验3.MySQL数据库表数据的查询操作实验(1) 一.实验目的 掌握SELECT 语句的基本语法格式. 掌握SELECT 语句的执行方法. 掌握SELECT 语句的 GROUP BY 和 ORDER ...
- mysql数据库崩溃恢复_MySQL数据库表维护和崩溃恢复
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 你可以使用myisamchk实用程序来获得有关你的数据库表的信息或检查.修复.优化他们.下列小节描述如何调用myisamchk(包括它的选项的描述),如何 ...
- mysql unicode转汉字_Mysql数据库表引擎与字符集
Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理 ...
最新文章
- Maven项目依赖管理工具
- read configuration - shared object - read_comp_configuration_raw
- php使用redis存储
- 如何处理word中字体和公式不在同一水平线上
- 平滑空间滤波器(附C语言实现代码)
- 时间序列经济python_(13)Python初入坑之时间序列基础内容
- 月薪没过3W,肯定是没关注这几位大佬的公众号
- MAX6299MTT在CPLD上的应用
- 走近棒球运动·堪萨斯城皇家队·MLB棒球创造营
- 3511. 倒水问题
- contour()函数的理解
- 微信小程序-视频弹幕的项目
- 【数据分析与挖掘】基于Apriori算法的中医证型的关联规则挖掘(有数据集和代码)
- 视觉SLAM(二):相机与图像
- 进程创建-终止-等待-替换
- 全国计算机考试如何查准考证号
- 卡普的21个NP完全问题-问题描述
- java-常量和变量
- nmon结果分析工具_使用nmon analyzer 分析指标
- 怎么把图片转换成jpg格式?