mysql 两个as_mysql – 多次使用’as’

我有这个:

SELECT

posts.id,

(SELECT COUNT(*) FROM votes WHERE votes.post = posts.id) AS votesCount,

(SELECT SUM(vote) FROM votes WHERE votes.post = posts.id) AS votesUp

FROM posts WHERE posts.id = 1

如何在不执行其他SELECT的情况下获得votesCount和votesUp之间的区别?就像是:

SELECT

posts.id,

(SELECT COUNT(*) FROM votes WHERE votes.post = posts.id) AS votesCount,

(SELECT SUM(vote) FROM votes WHERE votes.post = posts.id) AS votesUp,

votesCount - votesUp AS votesDown

FROM posts WHERE posts.id = 1

是否有可能,或者我是否还要调用另一个SELECT?

谢谢.

顺便说一句,抱歉我的英语不好.

解决方法:

我建议您加入投票而不是使用子查询,然后您可以轻松地重用聚合:

select

p.id,

count(v.post) as votesCount,

sum(v.vote) as votesUp,

count(v.post) - sum(v.vote) as votesDown

from

posts p

left join votes v on v.post = p.id

where

p.id = 1

group by

p.id

标签:mysql

来源: https://codeday.me/bug/20190708/1404940.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值