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

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

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

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

以上是 请问如何查询文章列表的同时查询到该文章是否被点赞 的全部内容, 来源链接: utcz.com/a/156737.html

回到顶部