求助一条mysql 更新 语句 where 后面为查询的结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助一条mysql 更新 语句 where 后面为查询的结果相关的知识,希望对你有一定的参考价值。

求助一条sql 语句
表 a 字段 aa , ab
表 b 字段 ab
更新 表a 字段 aa 为1 当 表a 字段ab = 表 b 字段 ab
update a set aa = '1' where 后面怎么写呢
谢谢

update a set aa = \'1\' where ab = ( select ab from b);
测试过了 可以通过
但是这个语句只有在 b表中只有一条记录的时候是准确的
如果b表中有多条记录 那你得在子查询中查询指定的某一个 ab 列的值 才是准确的!追问

提示错误是 #1242 - Subquery returns more than 1 row
b表中有很多记录呢
你的意思是 select ab from b 只有一条结果是吗

追答

如果有很多记录的话
假设我们要找 b表中id 为 100 的记录的 ab 和 a表的ab相同的时候
update a set aa=\'1\' where ab = (select ab from b where id=100);
这样就可以了 这样的话整个查询语句的含义是
修改 a 表中的 aa 字段的值为 1 条件是 a 表中的 ab字段和
b 表中的 id 为 100 的 ab 数据相同的

毕竟 a 表和 b 表是不同的2个表 如果 b表中只有仅仅一个数据的话 没关系

具体你的 b表的 ab的数据都是写什么 在什么情况下要把他们修改告诉我把

参考技术A update a, b set a.aa=1 where a.ab=b.ab追问

好像不行啊

追答

报什么错呢

追问

这个可以了
我还想 :
当 b中 有2个ab 的值等于a中ab值 a.aa=2
当 b中 有3个ab 的值等于a中ab值 a.aa=3

参考技术B update a,b set aa='1' where a.ab=b.ab 参考技术C where a.ab=b追问

where a.ab = b.ab ???

追答

嗯 后面AB没看到 B.AB

以上是关于求助一条mysql 更新 语句 where 后面为查询的结果的主要内容,如果未能解决你的问题,请参考以下文章

Oracle update语句用法

mysql查看一条sql更新了多少数据

求助!使用mysql触发器(其他也可)实现一条插入语句在同表中添加两条数据。

mysql执行update语句让某个字段变成null该怎么办?

mysql自动补零语句

MySQL批量更新数据