如你梦想和现实只是一步之遥,那么我觉得这一步就应该是执着和笨蛋式的坚持了吧。

You can’t specify target table ‘students’ for update in FROM clause

mysql 独孤九剑 109℃

为了验证:
2. 学生表 如下:(验证通过)
自动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001 张三 0001 数学 69
删除除了自动编号不同, 其他都相同的学生冗余信息

我写了一条删除sql如下:

DELETE FROM students WHERE id NOT IN(SELECT MIN(id) FROM students GROUP BY xuehao,NAME,class_no, class_name, sorce)

感觉是没问题的,但是执行的时候报错。
You can’t specify target table ‘students’ for update in FROM clause

含义:大概的意思就是说,我当前要删除的事students表中的数据,但是我用了students表作为了查询条件,在做删除的时候students不能直接作为查询条件使用。
其实就是不能直接采用students表面,可以变成(select * from students) abc这样的子查询替代。

修改后:

DELETE FROM students WHERE id NOT IN(SELECT MIN(id) FROM (SELECT * FROM students) bbc GROUP BY xuehao,NAME,class_no, class_name, sorce)

删除成功。

参考:MYSQL之You can’t specify target table for update in FROM clause解决办法

PS: 服务器页面生成花费时间 0.14秒 查询 37 次

转载请注明:KEEP3YUE » You can’t specify target table ‘students’ for update in FROM clause

喜欢 (0)