蝴蝶刀刀
2023-05-11 10:08:06
我有 3 張桌子Project,ProjectLikes并且User.當(dāng)?shù)卿浻脩魹g覽列表時(shí),Projects我必須確定當(dāng)前用戶是否喜歡該項(xiàng)目,即表中有一行存儲(chǔ)用戶 ID、項(xiàng)目 ID ProjectLikes。但我不知道該怎么做。這就是我獲取項(xiàng)目的方式。我不知道如何解決這個(gè)問題。SELECT id, title, createdAt,FROM ProjectORDER BY createdAt desc LIMIT 10我ProjectLikes正在存儲(chǔ)項(xiàng)目 ID 和用戶 ID。我想要的輸出是一個(gè)額外的行,表示用戶喜歡這個(gè)項(xiàng)目(自用戶登錄以來我已經(jīng)有了用戶 ID)
2 回答

BIG陽
TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
你可以使用exists
:
select p.*, (exists (select 1 from projetlikes pl where pl.projectid = p.id and pl.userid = ?)) is_liked_by_user from project p
這會(huì)向每一行添加一個(gè)0
/1
值,指示當(dāng)前用戶是否喜歡該項(xiàng)目。這假設(shè)該表projectlikes
有列projectid
和userid
。已登錄用戶的 ID?
在查詢中由 表示。

慕尼黑的夜晚無繁華
TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
另一種方法使用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
添加回答
舉報(bào)
0/150
提交
取消