繁体   English   中英

MySQL从另一个表中选择sum()

[英]Mysql select sum() from another table

我有这张桌子:

表:文章

   id   |   title   |   display   |
 -----------------------------------
    1   |   Fkekc   |      1      |
    2   |   ldsdf   |      1      |
    3   |   OTRld   |      0      |
    4   |   QCRSA   |      1      |

表:喜欢

   id  |  article_id |   like   |  type
 ----------------------------------------
    1   |      1     |   121    |   1
    2   |      1     |   652    |   2
    3   |      2     |   12     |   1
    4   |      1     |   5      |   3

我想得到这个结果:

Article [1] => 778
Article [2] => 12
Article [3] => 0
Article [4] => 0

我在两个表之间使用LEFT JOIN,但这会返回每个likes表的记录。 所以我得到了第一条的三条记录

我的代码:

 SELECT articles.*,likes.like FROM `articles` LEFT JOIN `likes` ON articles.id=likes.article_id WHERE display='1'

我知道我必须使用SUM()但我不知道如何使用它

根据您的回答,我发现我必须使用此方法:

SELECT articles.*, sum(likes.like) as likesSum FROM `articles` LEFT JOIN `likes`ON articles.id=likes.article_id WHERE display='1' GROUP BY articles.id

但是我想在查询中设置过滤器。 所以使用这个:

SELECT articles.*, sum(likes.like) as likesSum FROM `articles` LEFT JOIN `likes`ON articles.id=likes.article_id WHERE display='1' && likesSum>='100' GROUP BY articles.id

但是上面的代码不会返回任何结果

这是你的查询

SELECT articles.*,COALESCE(sum(likes.like),0) as total_like  FROM 
`articles` LEFT JOIN `likes` ON articles.id=likes.article_id group by   
articles.id

输出是 在此处输入图片说明

  SELECT articles.*, sum(likes.like) as likesSum FROM `articles` LEFT JOIN `likes`ON articles.id=likes.article_id WHERE display='1' GROUP BY articles.id

这应该为您完美地工作。

SELECT articles.id, sum(likes.like) from articles left join likes on (articles.id=likes.article_id) group by articles.id order by articles.id

参见将SUM()与GROUP BY结合使用

您所做的一切都正确,但其中只有一项丢失。 您应该使用分组依据

SELECT articles.*, likes.like 
FROM `articles` 
LEFT JOIN `likes` ON articles.id = likes.article_id 
WHERE display = '1' 
GROUP BY likes.article_id

此视觉表示形式非常有助于理解联接: http : //www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM