Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带连接或大小写的mysql条件子查询_Javascript_Mysql_Sql_Mariadb_Subquery - Fatal编程技术网

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

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。 我

我有3个表
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