假設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