使用UPDATE的目标表时出错是不可更新的

时间:2017-11-30 14:47:01

标签: mysql sql database

我正在运行一个简单的MySQL查询来使用子查询进行更新。这是我写的

的查询
UPDATE (
         SELECT IP2.ID, IP2.IP4, IP2.CLIENT FROM IP_ADDRESS IP2 WHERE IP2.V_NET = VNET_ID AND IP2.CLIENT IS NULL AND IP2.IP4 < (RANG_E - 1) 
         ORDER BY IP2.IP4, IP2.CLIENT LIMIT 1
         )AS IP SET IP.CLIENT = C_ID; 

运行后我收到以下错误:

The target table IP2 of the UPDATE is not updatable

我有一些相关问题mysql - The target table of the UPDATE is not updatableThe target table of the UPDATE is not updatable但我没有得到明确的答案。

我在这里缺少什么?我怎么写这个查询?有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

如果您的桌子上有主钥,那么您是安全的。

看看这次肮脏的旅行:

Try it at SQL Fiddle

样本表

create table t( a char(1), i int );

insert into t values 
('a', 1),
('b', 2),
('c', 3),
('d', 4);

通过pk更新

/* updating using double subquery, only way to use your same table */

update t
set a = 'z'
where i = (select i from (select * from t) t2  order by i desc limit 1);

适用于您的环境。

答案 1 :(得分:1)

UPDATE语句的格式如下:

UPDATE [table name]
   SET [column name] = [new value]
(optional WHERE clauses)

你在问题​​中写的更新sql毫无意义。使用正确的结构重写它。