解决You can‘t specify target table ... for update in FROM clause
时间:2023年12月04日
/来源:网络
/编辑:佚名
问题来源:LeetCode196. Delete Duplicate Emails。 一开始我写的SQL代码是:
delete from Person where (email, id) not in
(select email, min(id) minId from Person group by email)
结果报错:Runtime Error
You can’t specify target table ‘Person’ for update in FROM clause
谷歌了一下,从StackOverflow You can’t specify target table for update in FROM clause 得到了答案:
The problem is that MySQL, for whatever inane reason, doesn’t allow you to write queries like this:
UPDATE myTable SET myTable.A =
(
SELECT ... FROM myTable...
)
That is, if you’re doing an UPDATE/INSERT/DELETE on a table, you can’t reference that table in an inner query.
The solution is to replace the instance of myTable in the sub-query with (SELECT * FROM myTable), like this:
UPDATE myTable SET myTable.A =
(
SELECT ... FROM (SELECT * FROM myTable) AS something ...
)
所以本题,把子查询中的Person改为(select * from Person) P, 就ok了:
delete from Person where (email, id) not in
(select email, min(id) minId from (select * from Person) P group by email)
delete from Person where (email, id) not in
(select email, min(id) minId from Person group by email)
结果报错:Runtime Error
You can’t specify target table ‘Person’ for update in FROM clause
谷歌了一下,从StackOverflow You can’t specify target table for update in FROM clause 得到了答案:
The problem is that MySQL, for whatever inane reason, doesn’t allow you to write queries like this:
UPDATE myTable SET myTable.A =
(
SELECT ... FROM myTable...
)
That is, if you’re doing an UPDATE/INSERT/DELETE on a table, you can’t reference that table in an inner query.
The solution is to replace the instance of myTable in the sub-query with (SELECT * FROM myTable), like this:
UPDATE myTable SET myTable.A =
(
SELECT ... FROM (SELECT * FROM myTable) AS something ...
)
所以本题,把子查询中的Person改为(select * from Person) P, 就ok了:
delete from Person where (email, id) not in
(select email, min(id) minId from (select * from Person) P group by email)
新闻资讯 更多
- 【建站知识】查询nginx日志状态码大于400的请求并打印整行04-03
- 【建站知识】Python中的logger和handler到底是个什么?04-03
- 【建站知识】python3拉勾网爬虫之(您操作太频繁,请稍后访问)04-03
- 【建站知识】xpath 获取meta里的keywords及description的方法04-03
- 【建站知识】python向上取整以50为界04-03
- 【建站知识】scrapy xpath遇见乱码解决04-03
- 【建站知识】scrapy爬取后中文乱码,解决word转为html 时cp1252编码问题04-03
- 【建站知识】scrapy采集—爬取中文乱码,gb2312转为utf-804-03