请问如何查询文章列表的同时查询到该文章是否被点赞
一个在自学中的前端,望各位大佬帮忙解惑
需求背景:
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_starFROM (
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