mysql 同一个表不能同时进行update 和select 操作 已看过网上写法但还是有错

mysql 版本 5.7.9

原来的代码进行的操作
UPDATE message_list SET Status = 1 WHERE RecID IN (SELECT RecID FROM message_list );

根据网上 添加一个中间表后 还是不能进行update 操作
PDATE message_list SET Status = 1 WHERE RecID IN (SELECT a.RecID FROM (SELECT c.* FROM message_list c) a);

下面是错误信息

mysql> UPDATE message_list SET Status = 1 WHERE RecID IN (SELECT a.RecID FROM (SELECT c.* FROM message_list c) a);
1093 - You can't specify target table 'message_list' for update in FROM clause
mysql>

不知道LZ是不是要以下的效果:
图片说明

以下两种方式都是可以的

 update message_list set Status = 1 where RecID in (select * from (select RecID from message_list)v);
  update message_list set Status = 2 where RecID in (select RecId from (select * from message_list)v);

使用下面的sql执行:

UPDATE message_list SET Status = 1 WHERE RecID IN (SELECT t.* from (select  RecID from message_list ) t);

图片说明
版本问题 我不知道5.7.9 做了什么改动 因为看不懂英语 希望大家能一起找出原因 怎么修改这语句