我有 3 张桌子Project,ProjectLikes并且User.当登录用户浏览列表时,Projects我必须确定当前用户是否喜欢该项目,即表中有一行存储用户 ID、项目 ID ProjectLikes。但我不知道该怎么做。这就是我获取项目的方式。我不知道如何解决这个问题。SELECT id, title, createdAt,FROM ProjectORDER BY createdAt desc LIMIT 10我ProjectLikes正在存储项目 ID 和用户 ID。我想要的输出是一个额外的行,表示用户喜欢这个项目(自用户登录以来我已经有了用户 ID)
2 回答
BIG阳
TA贡献1859条经验 获得超6个赞
你可以使用exists
:
select p.*, (exists (select 1 from projetlikes pl where pl.projectid = p.id and pl.userid = ?)) is_liked_by_user from project p
这会向每一行添加一个0
/1
值,指示当前用户是否喜欢该项目。这假设该表projectlikes
有列projectid
和userid
。已登录用户的 ID?
在查询中由 表示。
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
另一种方法使用JOIN:
SELECT
id,
title,
createdAt,
CASE WHEN ProjectLikes.project_id IS NULL THEN 0 ELSE 1 END AS liked
FROM
Project
LEFT JOIN ProjectLikes
ON ProjectLikes.project_id = Project.id AND ProjectLikes.user_id = <USER_ID>
ORDER BY
createdAt desc
LIMIT 10
添加回答
举报
0/150
提交
取消