我试图删除多个重复的行/数据,但问题是MySQL说:
1064 -您的SQL语法中有一个错误;检查与您的MariaDB服务器版本对应的手册,以在第6行的“DELETE FROM studentTable WHERE RowNumber〉1”附近使用正确的语法
下面是我的代码:
WITH studentTable AS
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY studentID ORDER BY studentID) AS RowNumber
FROM student_quiz
)
DELETE FROM studentTable WHERE RowNumber > 1;
以下是选择版本的结果:enter image description here
我在youtube上发现了这段代码,这段视频是11年前上传的,所以我不确定这段代码是否还能在当前版本的MySQL中工作。我希望你能帮我解决这个问题。谢谢大家!
2条答案
按热度按时间gzszwxb41#
MySQL和MariaDB都不支持可更新的CTE。
pk
,那么我推荐一个简单的自连接:基本上,对于每个
id
,这将保留具有最小pk
的行,并删除其他行(如果有的话)。lyr7nygr2#
由于CTE是不可更新的,因此需要参考原始表使用
JOIN
删除行:Demo here