【发布时间】:2020-10-30 08:27:54
【问题描述】:
我查看了之前的答案,例如 this,但它给了我以下错误:You can't specify target table 'table_name' for update in FROM clause。
我有一张表,其中包含 3 列(id -> 自动递增主 id):
id、roll_no 和出勤率
对于每个具有多个条目的选定卷号,except the first entry 我想将所有条目 attendance 字段更新为 P。
我写的查询如下:
UPDATE tbl_class_attendance
set attendance = 'P'
where id NOT IN
(Select min(id)
from tbl_class_attendance
WHERE roll_no IN ('25', '45', '55')
GROUP
BY roll_no;
但它给了我上述错误。 我还查看了其他要求使用两个选择查询的答案,但我发现答案并不完全容易理解,而且我选择的卷号列表执行起来也很困难。
那么,有办法更新吗?
编辑:下面给出的答案
【问题讨论】:
-
顺便提一下,这个查询不会给出那个错误
-
看到这个thread
-
@Sergiu 答案不适用于嵌套选择中的 Group by
-
使用多表 UPDATE 语法 - 子查询必须在 UPDATE 子句表列表中,而不是在 WHERE 子句中。
-
@Strawberry 它给出了错误
You can't specify target table 'table_name' for update in FROM clause