我有两个表:
ASSIGNMENTS (ID)
ASSIGNMENT_REVIEWS (ID, ASSIGNMENT_ID)
作为选择的结果,如果您已经对作业进行了评论,我想检索一个标志。如何以最佳方式做到这一点?
答案 0 :(得分:2)
您正在寻找存在声明:
select
id,
case when exists (
select 1 from assignment_reviews where assignment_reviews.assignment_id = assignments.id
) then 1 else 0 end as hasReview
from
assignments
答案 1 :(得分:1)
您可以将
left join
与nvl2()
函数一起使用( 如果第一个参数为2nd argument
,not null
,则otherwise
中的值 实际上返回3rd argument
)
with assignments(id) as
(
select 101 from dual union all
select 102 from dual
), assignments_reviews(id,assignment_id) as
(
select 855, 101 from dual
)
select a.id,
nvl2(r.assignment_id,1,0) as already_presented
from assignments a
left join assignments_reviews r
on r.assignment_id = a.id;
ID ALREADY_PRESENTED
101 1
102 0