[英]Mysql Query select where the sum from one table is compared to the sum of rows in another table
[英]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.*, 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.