【发布时间】:2021-04-07 17:30:31
【问题描述】:
我是 MySQL 的初学者。这里我刚刚创建了一个表
CREATE TABLE Student (
Rollno int,
LastName varchar(255),
FirstName varchar(255),
Gpa float,
);
创建表后,我在以下查询的帮助下添加了值
USE persons;
INSERT INTO student
VALUES
(1, 'Aa', 'A', 8.5),
(2, 'Bb', 'B', 8.6),
(3, 'Cc', 'C', 8.7),
(4, 'Dd', 'D', 8.4);
尽管我搜索并尝试过,但我没有任何独特的价值,例如 answer 中提到的 id。
我在this answer 的帮助下再次尝试,代码如下所示
WITH cte AS (
SELECT
Rollno,
LastName,
FirstName,
Gpa,
ROW_NUMBER() OVER (
PARTITION BY
Rollno
ORDER BY
Rollno
)RN
FROM
persons.student
)
DELETE FROM cte
WHERE RN > 1;
但上面会抛出错误说明
错误代码:1288。 DELETE的目标表cte不可更新
所以我只想要一个最佳解决方案,在表中包含单个条目。
【问题讨论】:
-
对删除语句使用 LIMIT。请参阅答案:https://stackoverflow.com/questions/12779978/delete-first-x-lines-of-a-database
-
删除并重新创建将 rollno 分配为主键的表。然后重新插入