我的学生表有以下表格
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"
我是否需要创建一个临时表而不是它?
由于
答案 0 :(得分:0)
您收到错误的原因是您尝试设置列的值=表。 SET语句将使用给定值更新与约束匹配的每一行。如果您的DBMS支持,您可以通过UPDATE使用JOIN语句完成您要执行的操作。你可以查看这个问题的答案的语法