首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取更新的目标表不可更新时出错

获取更新的目标表不可更新时出错
EN

Stack Overflow用户
提问于 2017-11-30 22:47:01
回答 2查看 1.9K关注 0票数 0

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

代码语言:javascript
复制
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; 

运行后,我得到以下错误:

代码语言:javascript
复制
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相关的问题,但我没有得到明确的答案。

我有什么遗漏的吗?如何编写此查询?有什么帮助吗?

EN

回答 2

Stack Overflow用户

发布于 2017-11-30 22:59:25

如果你的表上有主键,你就是安全的。

看看这段肮脏的旅程:

Try it at SQL Fiddle

样表

代码语言:javascript
复制
create table t( a char(1), i int );

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

通过pk更新

代码语言:javascript
复制
/* 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
EN

Stack Overflow用户

发布于 2017-11-30 23:04:36

UPDATE语句的格式如下:

代码语言:javascript
复制
UPDATE [table name]
   SET [column name] = [new value]
(optional WHERE clauses)

您在问题中编写的更新sql没有任何意义。使用正确的结构重写它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47576155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档