左联接,即使SQL为空

0

我的数据库中有两个表:建议和投票

一个建议可以有0或很多票

我想通过臭名昭著的所有建议,以验证订单:

SELECT advices.*, COUNT(upvotes.id) - COUNT(downvotes.id) AS notoriety 
FROM `advices` 
LEFT JOIN votes AS upvotes ON upvotes.is_good=1 AND upvotes.advice_id=advices.id 
LEFT JOIN votes AS downvotes ON downvotes.is_good=0 AND downvotes.advice_id=advices.id 
WHERE `advices`.`subject_id` = 1
AND `advices`.`state` = 'validated' 
ORDER BY notoriety ASC

但是,结果仅显示带有投票的建议!我也应该更改以得到未经表决的建议吗?

谢谢

戈登·利诺夫

使用条件聚合而不是两个联接:

SELECT a.*, 
       (SUM(downvotes.is_good = 1) - SUM(downvotes.is_good = 0) ) AS notoriety 
FROM advices a LEFT JOIN
     votes v
     ON a.id = v.advice_id
WHERE a.`subject_id` = 1 AND a.`state` = 'validated' 
GROUP BY a.id
ORDER BY notoriety ASC;

您可以使用count(distinct)而不是使用您的版本count()但是,以上版本更简单,并且应具有更好的性能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

即使左联接为空也显示字段

来自分类Dev

左联接,右为空

来自分类Dev

按日期左联接,将结果分组,在分组结果中显示所有日期(即使为空)

来自分类Dev

左联接不会将不匹配的行返回为空

来自分类Dev

SQL-左联接上没有空

来自分类Dev

SQL左联接错误

来自分类Dev

sql左联接返回

来自分类Dev

SQL左联接位置

来自分类Dev

sql左联接返回

来自分类Dev

SQL左联接条件

来自分类Dev

SQL Server UPDATE与左联接?

来自分类Dev

SQL左联接子选择

来自分类Dev

Laravel:左联接SQL错误

来自分类Dev

SQL左联接查询差异

来自分类Dev

SQL左联接,最新记录

来自分类Dev

Oracle SQL左联接,位置

来自分类Dev

如何优化左联接的sql?

来自分类Dev

SQL内部联接到左联接表

来自分类Dev

Sql Server 中的自联接+左联接

来自分类Dev

RethinkDB-左联接,其中joined_table.identifier为空?

来自分类Dev

左联接中的错误空引用

来自分类Dev

Linq中的左联接与可为空的引用

来自分类Dev

带有左联接并防止空结果的SQL查询(数据表)

来自分类Dev

左联接后对总数进行计数,并且NULL变量要求为0-SQL Server

来自分类Dev

js-data-sql DSSqlAdapter为hasOne关系创建左联接

来自分类Dev

即使存在匹配的值,左联接也会返回null

来自分类Dev

将多个右联接重写为左联接

来自分类Dev

SQL左联接仅先匹配

来自分类Dev

在SQL中左联接获取