为了账号安全,请及时绑定邮箱和手机立即绑定

带有连接或大小写的 mysql 条件子查询

带有连接或大小写的 mysql 条件子查询

蝴蝶刀刀 2023-05-11 10:08:06
我有 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?在查询中由 表示。


查看完整回答
反对 回复 2023-05-11
?
慕尼黑的夜晚无繁华

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


查看完整回答
反对 回复 2023-05-11
  • 2 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信