当我更新多对多关系时,所有记录都会获得相同的值

时间:2016-07-18 11:39:34

标签: java mysql jdbc sql-update many-to-many

您好我想使用jdbc对我的数据库进行更新。

在我的数据库中,学生可以获得多个课程,并且可以从多个学生那里获得课程。

当我尝试更改有多节课的学生课程记录时。

它使所有课程的价值相同。

我只想编辑特定的课程。

与此同时,我正在更新他们的名字,不,上课和上课。

例如:

杰克---英语

杰克---积分

杰克---爪哇

我只想将Java更改为History,但结果是:

杰克---历史

杰克---历史

杰克---历史

我有3张桌子。

-Lesson -

Lid(PK),Number,Code,Lesson_name

- 学生 -

Sid(PK),Cid(FK),姓名,否

-Student_lesson -

Sid(FK),Lid(FK)

我的代码

result = st.executeQuery("select lid from lesson where lesson_name='"+lesson_name+"'");
    if(result.next()){
    int lidnum = result.getInt(1);
    st.executeUpdate("update student_lesson set lid = '"+lidnum+"' where sid = (select sid from student where no = '"+no+"')");
    }

2 个答案:

答案 0 :(得分:0)

  

我只想将Java更改为History

为此,您应该获得Java和历史记录lid

然后按如下方式修改上一个查询:

update student_lesson set lid = lid_history where sid = (select sid from student where no = no) and lid = lid_java

答案 1 :(得分:0)

您还需要提供课程ID:

st.executeUpdate("update student_lesson set lid = '"+lidnum+"' 
where sid = (select sid from student where no = '"+no+"')
and lid = whatever_the_lid_of_Java_is");