mysql - 从表中选择 SUM 和唯一值的最佳方法

标签 mysql sql

我有一个 SQL 查询,它计算特定列的值总和,并且还需要从同一个表中检索单个值。

我想知道,由于将读取整个表格来计算总和,有没有办法可以同时选择想要的值?

这可能吗,还是我需要在表格上创建 2 个不同的 SELECT,如下所示?

我查询的当前代码是:

SELECT [columns],

(SELECT SUM(value) FROM votes WHERE postid=p.postid) AS charge,
(SELECT value FROM votes WHERE postid=p.postid AND userid=u.userid) AS currentVote

FROM posts p, users u WHERE p.userid=u.userid

谢谢!

最佳答案

在您的具体情况下,这是可能的,因为您想要与特定用户的帖子相关的投票值的总和。

您可以使用类似这样的内容,而不是使用嵌套查询:

根据评论,我更新了查询:

SQL fiddle :http://www.sqlfiddle.com/#!2/2a0920/9

SELECT p.postid, sum(v.value) AS charge,
v.value AS currentVote
FROM posts p,
     users u,
     votes v
WHERE p.userid=u.userid
  AND v.postid = p.postid
group by p.postid;

关于mysql - 从表中选择 SUM 和唯一值的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782039/

相关文章:

mysql - 如果我们依赖语句中的索引扫描顺序,两个 InnoDB UPDATE 语句是否可以防止 PK 索引死锁?

mysql - SQL 语句返回应通过的步骤列表中的当前步骤以及进程是否已结束

mysql - Sqlfiddle 问题

php - 检查两个表是否具有相同的值(并添加复选标记)

php - 重写代码 - 不起作用

php - 保存可见的用户日志

mysql - 使用 MAX(column) 时,其他列的值不匹配

mysql - MySQL中如何声明内表?

mysql:用与前一行相同的数字更新增量序列号

mysql - 按星期几和一天中的时间过滤日期