问答

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

作者:admin 2021-04-22 我要评论

一个在自学中的前端,望各位大佬帮忙解惑 需求背景: 1、在列表页展示20条文章列表的形式 2、每篇文章显示当前用户是否已经点赞了 希望的数据格式 list:[{ title...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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

需求背景:
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
###
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列表 })

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 求助!Mysql workbench connections出

    求助!Mysql workbench connections出

  • c++ 的dll 转golang可以调用

    c++ 的dll 转golang可以调用

  • c++的 new int{10}  和 new int(10) 有

    c++的 new int{10} 和 new int(10) 有

  • Grafana MySQL为数据源时, 折线图无法

    Grafana MySQL为数据源时, 折线图无法

腾讯云代理商
海外云服务器