Javascript 带连接或大小写的mysql条件子查询
我有3个表Javascript 带连接或大小写的mysql条件子查询,javascript,mysql,sql,mariadb,subquery,Javascript,Mysql,Sql,Mariadb,Subquery,我有3个表Project,ProjectLikes和User 当登录用户浏览项目列表时,我必须确定当前用户是否喜欢该项目,即ProjectLikes表中有一行存储用户id、项目id 但我不知道怎么做。 这就是我获取项目的方法。我想不出怎么解决这个问题 SELECT id, title, createdAt, FROM Project ORDER BY createdAt desc LIMIT 10 在ProjectLikes中,我存储项目id和用户id。 我
Project
,ProjectLikes
和User
当登录用户浏览项目列表时,我必须确定当前用户是否喜欢该项目,即ProjectLikes
表中有一行存储用户id、项目id
但我不知道怎么做。
这就是我获取项目的方法。我想不出怎么解决这个问题
SELECT
id,
title,
createdAt,
FROM
Project
ORDER BY
createdAt desc
LIMIT 10
在ProjectLikes
中,我存储项目id和用户id。
我想要的输出是另外一行,它表示用户喜欢这个项目(自从用户登录后,我已经有了用户id)您可以使用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在查询中由?
表示。您可以使用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在查询中由?
表示。使用加入的另一种方法:
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
选择
身份证件
标题
创建数据,
如果ProjectLikes.project_id为NULL,则0或1以liked结束
从…起
项目
左键连接项目
在ProjectLikes.project\u id=project.id和ProjectLikes.user\u id=
订购人
创建数据描述
限制10
另一种使用连接的方法
:
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
选择
身份证件
标题
创建数据,
如果ProjectLikes.project_id为NULL,则0或1以liked结束
从…起
项目
左键连接项目
在ProjectLikes.project\u id=project.id和ProjectLikes.user\u id=
订购人
创建数据描述
限制10