update ... where a.uid in(select ...) SQL更新字段与条件字段同一个

编程教程 > Java (1409) 2025-01-27 10:25:12

需求:将表(tableA)里面的字段column1值为33的改为22

错误示例

update tableA set column1='22' 
where uid in (
select uid from tableA where column1='33'
)


错误提示是:ERROR 1093 (HY000): You can't specify target table 'apples' for update in FROM clause. MySQL手册[UPDATE documentation](http://dev.mysql.com/doc/refman/5.0/en/update.html)这下面有说明 : “Currently, you cannot update a table and select from the same table in a subquery.”
在这个例子中,要解决问题也十分简单,但有时候不得不通过查询子句来update目标。好在我们有办法。


正确示例:

update tableA set column1='22'
where uid in (
    select uid from (
        select uid from tableA where column1='33'
    ) tmp
)



 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
需求:将表(tableA)里面的字段column1值为33的改为22错误示例update tableA set column1='22'  where uid in ( select uid...
sql server保留2位/N位小数select ROUND(Column_name,2) from table_name
更新命令:apt update apt dist-upgrade遇到提问选y正常情况就升级完毕了。
postman 新版本要使用collection居然强制登录。不放心啊。故此记录如何禁止更新。 普通的通过setting的update 关闭并没多少用,一不小心
PVE 禁用软件包数据库等自动更新众所周知,线上或者个人长期使用一个平台,第一要素是稳定,第二要素才是更新新功能。
案例问题描述有这么一个SQL,外查询 where 子句的 bizCustomerIncoming_id 字段,和子查询 where 字句的 cid 字段都有高效
问题 SQL 描述问题 SQL 和执行计划是这样的:explain SELECT t1.stru_id AS struId, ...FROM cams_stru
SQL SERVER数据库中SUBSTRING函数的使用SELECT SUBSTRING(a.receiveTime,0,20) formatReceiveTi
在导入sql备份文件到MySQL数据库中,无论物理机安装MySQL还是docker环境安装的MySQL,思路是一样的。首先,登录进入MySQL如果是物理的,则直接执行命令mysql-u-p&gt...
sql server数据库中字符串转换为floatselect convert(float,t.column_name) from table_name t
Ubuntu系统或者Linux系统都应该保证软件更新到最新,以减少软件漏洞导致服务器风险。Ubuntu系统更新软件主要分两步。第一步:更新软件源信息该操作只会更新软件最新的信息到本地,不会下载和安装。
sql server数据库查询将varchar字符型转换为数字float型select convert(float, column_name) from tab
sql server 2016数据库导出表数据/表结构1.打开Microsoft SQL Server Management Studio工具选择要导出表的数据
spring data redis设置缓存的过期时间,spring data redis更新缓存的过期时间
设置好idea的SQL数据库类型,以便于idea工具提供准确的语法提示。该方法也就是解决idea SQL语法提示不准确问题的解决方法。 打开设置菜单File-&gtl;