2013-12-08 48 views
1

這裏的Oracle查詢是我的表[答案]和[student_answer]與多輸出

create table answer(
varchar2(10) ques_id, 
varchar2(10) ans, 
primary key (ques_id) 
); 

create table student_answer(
varchar2(10) stud_id, 
varchar2(10) quiz_id, 
varchar2(10) ques_id, 
varchar2(10) ans, 
number(3) mark, 
primary key (stud_id,quiz_id,ques_id) 
); 

UPDATE student_answer 
SET mark = 1 
WHERE * IN (select ques_id, stud_id, quiz_id from answer m 
right outer join student_answer sa 
on (sa.ques_id = m.ques_id and sa.ans=m.ans) 
where m.ques_id is not null 
order by sa.ques_id); 

*我來到這裏混淆

我怎樣才能得到每個子查詢多行輸出?以便我可以根據結果更新表格?

* every student have different id 
* every quiz have different id 
* every question have different id 

回答

1

要使用IN你必須有在左邊只有一列,並在合適的該列的可能性。

但我想你或許可以用EXISTS來做你的UPDATE。試試這個:

UPDATE student_answer sa 
SET mark = 1 
WHERE EXISTS (
    SELECT 1 
    FROM answer m 
    WHERE sa.ques_id = m.ques_id 
     AND sa.ans = m.ans 
    );