假设likes
只能有1行具有相同的(USER_ID,POST_ID):
SELECT p.* ,
CASE WHEN
l.id IS NULL THEN 0
ELSE 1
END as is_liked
FROM posts p
LEFT JOIN likes l ON l.user_id = p.user_id and l.post_id =p.post_id
如果不是(多行中likes
对于给定的(USER_ID,POST_ID)):
SELECT p.* ,
CASE WHEN
l.user_id IS NULL THEN 0
ELSE 1
END as is_liked
FROM posts p
LEFT JOIN
(
SELECT DISTINCT user_id,post_id FROM likes
) l ON l.user_id = p.user_id and l.post_id =p.post_id;
或者
SELECT p.* ,
CASE
WHEN EXISTS (SELECT NULL FROM likes l
WHERE l.user_id = p.user_id and l.post_id =p.post_id) THEN 1
ELSE 0
END as is_liked
FROM posts p
更新 我希望有一个更好的了解这个问题的吧。我的假设:posts.user_id
是创建帖子的用户的ID; like
表存储关于谁喜欢该帖子的信息。因此,要检查所有的职位,以及是否特定像他们一样,你需要($login_user_id
应正确转义)
SELECT p.* ,
CASE
WHEN EXISTS (SELECT NULL FROM likes l
WHERE l.user_id = $login_user_id and l.post_id =p.post_id) THEN 1
ELSE 0
END as is_liked
FROM posts p
请编辑您的问题,一些样本数据添加到'likes'表,然后添加你想要的结果从样本数据中结合'posts'中的数据。如果没有它,很难说出你的要求。谢谢。 –
我已添加,现在可以查询 – user1920678