mysql sum代码_带SUM的MySQL连接

本文探讨如何在MySQL中使用SUM函数与JOIN操作结合,查询带有投票统计数据的任务记录。通过举例说明,展示如何从tasks和votes两个表中获取特定用户的所有任务及其对应的点赞(up)和反对(down)总数。
摘要由CSDN通过智能技术生成

这个问题可能已经被问了很多次了,所以,请原谅我重复了一遍,但是我似乎找不到这样的东西,我也无法建立类似于我想要实现的东西。

例如,假设我有以下表结构:

//tasks

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

| Field | Type | Null | Key | Default | Extra |

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

| id | int(11) | NO | P | None | AI |

| user | int(11) | NO | | None | |

| data | varchar(200) | NO | | None | |

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

//votes

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

| Field | Type | Null | Key | Default | Extra |

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

| id | int(11) | NO | P | | AI |

| user | int(11) | NO | | | |

| item | int(11) | NO | | | |

| up | tinyint(1) | NO | | 0 | |

| down | tinyint(1) | NO | | 0 | |

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

使用以下数据:

//tasks

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

| id | user | data |

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

| 1 | 1 | something |

| 2 | 2 | lorem ip |

| 3 | 1 | biggy |

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

//votes

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

| id | user | item | up | down |

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

| 1 | 8 | 1 | 1 | 0 |

| 2 | 4 | 1 | 1 | 0 |

| 3 | 2 | 1 | 0 | 1 |

| 4 | 2 | 2 | 1 | 0 |

| 5 | 1 | 2 | 1 | 0 |

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

我想做类似的事情:

SELECT r.* FROM `tasks` WHERE `user` = '1' r

LEFT JOIN (SELECT SUM(t.up) AS up,

SUM(t.down) AS down

FROM `votes` t

WHERE t.item = r.id) r ON r.id = t.item

是的,到目前为止这是我的问题,但它不起作用,我不知道如何纠正。

基本上,我想:

选择

一切

从表

任务

哪里

user

是“x”

连接中的每一行

任务

(在步骤1中选择)使用

总和

up

,

总和

down

从表

投票

哪里

item

等于

id

任务

这应该会产生类似的结果。

用户

=1):

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

| id | user | data | up | down |

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

| 1 | 1 | something | 3 | 1 |

| 3 | 1 | biggy | 0 | 0 |

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

好吧,我希望你们能理解并帮助我。

提前谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值