将多个记录计数添加到表中

时间:2014-11-07 21:37:11

标签: sql-update

我的学生表有以下表格

student id | student year | test result | semester

我想将记录分组在一起,看看学生在特定学期做了多少次重新测试。

我正在尝试更改表并将total_tests_taken列添加到表中并使用 更新声明如:

ALTER table students
(add  total_tests_taken number );

UPDATE students 
SET total_tests_taken = (select count(*)  OVER ( PARTITION BY student_id, semester) FROM students)

但我的sql说不清楚:"ORA-01427: single-row subquery returns more than one row"

我做错了什么?

我是否需要创建一个临时表而不是它?

由于

1 个答案:

答案 0 :(得分:0)

您收到错误的原因是您尝试设置列的值=表。 SET语句将使用给定值更新与约束匹配的每一行。如果您的DBMS支持,您可以通过UPDATE使用JOIN语句完成您要执行的操作。你可以查看这个问题的答案的语法

How can I do an UPDATE statement with JOIN in SQL?