首页 > 解决方案 > MYSQL 查询,对所有值求和,同时还使用连接表选择一个值

问题描述

在获取一篇文章时,我想从另一个表中获取喜欢的总和,同时检查当前用户是否喜欢这篇文章。

要获得文章和喜欢的总和,我可以这样做:

"SELECT a.id AS aid,a.title,a.slug,SUM(l.likes) AS likes  
FROM articles `a` 
LEFT JOIN likes `l` 
ON l.articleid = a.id 
WHERE a.id = 33";

如何同时获取当前用户是否喜欢该文章。

用户是否喜欢这篇文章的逻辑是

"SELECT like FROM likes where articleid = 33 AND userid = 22"

如果行数 == 0,则用户不喜欢该文章。

但是,我不确定如何将其集成到第一个查询中。我认为它可能涉及使用 CASE,但这超出了我对 SQL 的熟悉程度。感谢您的任何建议。

标签: phpmysqlcase

解决方案


SELECT a.id AS aid,
       a.title,
       a.slug,
       SUM(l.likes) AS likes,
       SUM(l.userid = 22) AS is_liked
FROM articles `a` 
LEFT JOIN likes `l` ON l.articleid = a.id 
WHERE a.id = 33

推荐阅读