sql update - 两个表 - 根据另一个表中的列更新具有增量值的列

时间:2016-02-25 01:29:58

标签: sql oracle

CLASS (class, count)

 class     count
--------- -------
 first     3
 second    2
 third     4

STUDENT (class, id_no, name)

 name     id_no   name
-------- ------- ------
 first    1       abc
 first    2       bcd
 first    3       def
 second   1       xyz
 second   2       tay
 third    1       m
 third    2       n
 third    3       o
 third    4       p

STUDENT表中的总行数始终等于CLASS表中的计数。 例如:CLASS表中的第一个条目显示类名为"第一个"算作3。 所以它在STUDENT表中有3个条目。

现在的问题是 - 学生表的id_no列有' 0'所有行都为零。

应如上所示进行更新。

如何实现?

1 个答案:

答案 0 :(得分:0)

只有在没有重复的类名时才能使用。否则,您需要先创建一个唯一的ID

 WITH cte as ( 
       SELECT class, 
              row_number() over (partition by clas  order by name ) as id,
              name
       FROM Student
 )
 UPDATE Student 
 SET id_no = cte.id
 FROM  cte
 WHERE Student.class = cte.class 
   and Student.name  = cte.name