请问如何查询文章列表的同时查询到该文章是否被点赞

新手上路,请多包涵

一个在自学中的前端,望各位大佬帮忙解惑

需求背景:
1、在列表页展示20条文章列表的形式
2、每篇文章显示当前用户是否已经点赞了

希望的数据格式

list:[{
    title:'文章标题',
    //0|1用来区分是否当前用户点赞了该文章
    isStar: 0|1 
},
...]

我的表是3张表,一张文章表,一张用户表,以及一张点赞表(表中只有两个字段,文章id,和用户id 用来把用户和文章做绑定关系)

这是我关联查询文章和作者的sql,不知道怎么修改了
table1 为文章表
table2 为用户表

SELECT table1.id, table1.context,table1.star,table1.share,table2.name,table2.img from table1 inner join THEY_SAY_USER on table1.auther_id = table2.id ORDER BY star DESC limit 20
阅读 2.4k
2 个回答
SELECT t.id, t.context, t.star, t.share, u.name, u.img, IF(ISNULL(u.name),0,1) AS is_star
FROM (
    SELECT a.id, a.context, a.star, a.share, l.user_id
    FROM `article` AS a
        LEFT JOIN `like` AS l ON l.article_id = a.id
) AS t
    LEFT JOIN `user` AS u ON u.id = t.user_id
WHERE u.user_id = #{userId}

差不多这样吧,先用文章表点赞表组成一个临时表,再和用户表查询一下。

分两步可能会更好,避免 join 太多大表(可用 explain 验证查询性能)。
第一步查询文章,第二步查询点赞。

第二步:select * from 点赞表 where user_id={user_id} and article_id in ({ 第一步查到的文章ID列表 })

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题