我有一个无法理解的例子。 下面的代码是从我的数据库中选择所有学生的名字和成绩。 我想创建一个脚本,将删除每个学生的最小成绩。 但是如果最小成绩是3例如学生有2个成绩3我想删除他们中的一个(随机或第一个,我不在乎,我不想把一个规则);我在这里所做的工作正常,但删除所有等级3.删除最小值
DECLARE
nume studenti.nume%TYPE;
nota note_studenti.nota%TYPE;
CURSOR myc IS SELECT nume, nota
FROM studenti INNER JOIN note_studenti
ON studenti.mat = note_studenti.mat;
BEGIN
OPEN myc;
LOOP
FETCH myc INTO nume, nota;
EXIT WHEN myc%NOTFOUND;
END LOOP;
DELETE FROM note_studenti WHERE nota =
(SELECT MIN(note_studenti.nota) FROM note_studenti);
CLOSE myc;
END;
LE:我想出了如何删除最小的成绩。 现在我只需要让它只删除一行,而不是全部删除。
最后使用* LIMIT *。 – kashan
请问你能更具体吗?我尝试了“LIMIT 1”,“LIMIT = 1”和“FIRST 1 ROWS ONLY”,但是每次出现错误时,我的SQL命令都没有正确结束。我在最后一个括号之后添加了限制。 – redhat01
DELETE FROM note_studenti WHERE nota =(SELECT MIN(note_studenti.nota)FROM note_studenti)limit 1 – kashan