【发布时间】:2020-11-23 09:23:31
【问题描述】:
我的数据库中有三个名为 questions、question_video 和 question_video_progress 的表。 question_video 和 question_video_progress 有一个外键 ques_id,它是问题的主键。 我想要的是一个查询,我可以从 question_video 表中获取 video_id,从 question_video_table 中获取 video_progress_time,分别对应于一些 ques_id 和 email。 可能存在 ques_id 对应于 question_video 中没有 video_id 的情况。 以及 ques_id 与 video_progress_time 不对应的情况。
SELECT
QUESTION_VIDEO.VIDEO_ID,
QUESTION_VIDEO_PROGRESS.VIDEO_PROGRESS_TIME
FROM QUESTION_VIDEO
RIGHT JOIN QUESTIONS ON QUESTION_VIDEO.QUES_ID = QUESTIONS.QUES_ID
LEFT JOIN QUESTION_VIDEO_PROGRESS ON QUESTION_VIDEO_PROGRESS.QUES_ID = QUESTIONS.QUES_ID
WHERE
(QUESTION_VIDEO_PROGRESS.EMAIL = 'someEmail@gmail.com' AND QUESTION_VIDEO.QUES_ID = 2)
OR
QUESTION_VIDEO.QUES_ID = 2;
上面的查询返回两行对应ques_id。我想要的是,如果 QUESTION_VIDEO_PROGRESS 表中存在与 ques_id 对应的电子邮件,则返回该电子邮件特定的值,否则如果该电子邮件不存在,则返回与 ques_id 对应的 video_id。
【问题讨论】:
标签: sql postgresql left-join where-clause