我正在运行一个简单的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 updatable 和 The target table of the UPDATE is not updatable但我没有得到明确的答案。
我在这里缺少什么?我怎么写这个查询?有什么帮助吗?
答案 0 :(得分:1)
如果您的桌子上有主钥,那么您是安全的。
看看这次肮脏的旅行:
样本表:
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毫无意义。使用正确的结构重写它。